{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  依赖安装和导入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:21.759361Z",
     "iopub.status.busy": "2024-12-29T16:59:21.758690Z",
     "iopub.status.idle": "2024-12-29T16:59:25.047318Z",
     "shell.execute_reply": "2024-12-29T16:59:25.046412Z",
     "shell.execute_reply.started": "2024-12-29T16:59:21.759312Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: imblearn in /root/.local/lib/python3.10/site-packages (0.0)\n",
      "Requirement already satisfied: imbalanced-learn in /usr/local/lib/python3.10/dist-packages (from imblearn) (0.12.3)\n",
      "Requirement already satisfied: numpy>=1.17.3 in /usr/local/lib/python3.10/dist-packages (from imbalanced-learn->imblearn) (1.26.4)\n",
      "Requirement already satisfied: scipy>=1.5.0 in /usr/local/lib/python3.10/dist-packages (from imbalanced-learn->imblearn) (1.13.1)\n",
      "Requirement already satisfied: scikit-learn>=1.0.2 in /usr/local/lib/python3.10/dist-packages (from imbalanced-learn->imblearn) (1.2.2)\n",
      "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from imbalanced-learn->imblearn) (1.4.2)\n",
      "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from imbalanced-learn->imblearn) (3.5.0)\n"
     ]
    }
   ],
   "source": [
    "!pip install imblearn --user"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* sklearn(scikit-learn)：提供机器学习工具和模型。Kaggle自有。\n",
    "* imblearn：用于处理不平衡数据集，包含 SMOTE（一种上采样方法）。\n",
    "    * SMOTE 合成少数过采样技术\n",
    "    * 上采样是处理不平衡数据集的技术之一，目的是通过增加少数类的样本数量来平衡类别分布。常见的上采样方法包括：\n",
    "        1. **随机过采样**：随机复制少数类样本。\n",
    "        2. **SMOTE**：在少数类样本之间插值生成新样本。\n",
    "        3. **ADASYN**：SMOTE的改进版本，对类别不平衡更严重的类别生成更多样本。\n",
    "        4. **KMeans SMOTE**：使用KMeans聚类来确定少数类的哪些样本需要生成新样本。\n",
    "        5. **Borderline-SMOTE**：仅对边界样本生成新样本，以减少过拟合。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:25.048829Z",
     "iopub.status.busy": "2024-12-29T16:59:25.048554Z",
     "iopub.status.idle": "2024-12-29T16:59:25.053292Z",
     "shell.execute_reply": "2024-12-29T16:59:25.052469Z",
     "shell.execute_reply.started": "2024-12-29T16:59:25.048806Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# 导入标准库\n",
    "import os\n",
    "import math\n",
    "import time\n",
    "import random\n",
    "import datetime\n",
    "# 导入科学计算与数据分析库\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "# 导入可视化工具\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* os：提供操作系统相关功能，比如文件路径管理。\n",
    "* math：提供数学函数，比如平方根、对数等。\n",
    "* time：进行时间相关操作，比如获取当前时间或计算程序运行时间。\n",
    "* random：生成随机数，用于数据处理和增强。\n",
    "* datetime：处理日期和时间，常用于时间戳记录。\n",
    "* numpy：用于处理多维数组和矩阵计算，高效的数值操作库。\n",
    "* pandas：用于数据加载、清洗、操作和分析，主要是 DataFrame 格式的表格数据。\n",
    "* seaborn：高级可视化库，基于 matplotlib，用于绘制美观的数据统计图表。\n",
    "* matplotlib.pyplot：底层绘图库，提供绘制图形的基础功能。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:25.055295Z",
     "iopub.status.busy": "2024-12-29T16:59:25.055037Z",
     "iopub.status.idle": "2024-12-29T16:59:25.068434Z",
     "shell.execute_reply": "2024-12-29T16:59:25.067509Z",
     "shell.execute_reply.started": "2024-12-29T16:59:25.055273Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# 导入 TensorFlow 及其相关模块\n",
    "import tensorflow as tf\n",
    "import tensorflow.keras as K\n",
    "from tensorflow.keras import Sequential, utils, regularizers, Model, Input\n",
    "from tensorflow.keras.layers import Flatten, Dense, Conv1D, MaxPool1D, Dropout, AvgPool1D"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* tensorflow：一个用于深度学习的框架，支持构建和训练神经网络。\n",
    "* keras：TensorFlow 的高级 API，用于快速定义和训练深度学习模型。\n",
    "* 导入的具体模块和类：\n",
    "  * Sequential：一种简单的模型构建方式，按顺序堆叠层。\n",
    "  * utils：工具模块，如模型保存和加载等。\n",
    "  * regularizers：正则化模块，用于减轻模型过拟合。\n",
    "  * Model 和 Input：用于构建自定义模型（比 Sequential 更灵活）。\n",
    "  * Flatten：将多维张量展平成一维张量。\n",
    "  * Dense：全连接层。\n",
    "  * Conv1D：一维卷积层，用于处理序列数据（如时间序列）。\n",
    "  * MaxPool1D：一维最大池化层，用于降维。\n",
    "  * Dropout：正则化方法，随机丢弃一部分神经元以减轻过拟合。\n",
    "  * AvgPool1D：一维平均池化层。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:25.069835Z",
     "iopub.status.busy": "2024-12-29T16:59:25.069571Z",
     "iopub.status.idle": "2024-12-29T16:59:25.085576Z",
     "shell.execute_reply": "2024-12-29T16:59:25.084774Z",
     "shell.execute_reply.started": "2024-12-29T16:59:25.069815Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# 导入不平衡数据处理工具\n",
    "from imblearn.over_sampling import SMOTE\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.preprocessing import OneHotEncoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* SMOTE（Synthetic Minority Oversampling Technique）\n",
    "* KFold：交叉验证工具，将数据分成 K 个子集，循环训练和验证。\n",
    "* OneHotEncoder：将分类标签（如 0、1、2）编码成独热编码形式（如 [1,0,0]）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据加载与预处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 加载数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:25.086733Z",
     "iopub.status.busy": "2024-12-29T16:59:25.086411Z",
     "iopub.status.idle": "2024-12-29T16:59:27.924533Z",
     "shell.execute_reply": "2024-12-29T16:59:27.923582Z",
     "shell.execute_reply.started": "2024-12-29T16:59:25.086711Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# 加载训练集和测试集(相对路径)\n",
    "train = pd.read_csv('/kaggle/input/herat-competition/train.csv')\n",
    "test = pd.read_csv('/kaggle/input/herat-competition/testA.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 定义数据精度量化压缩函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:27.925831Z",
     "iopub.status.busy": "2024-12-29T16:59:27.925491Z",
     "iopub.status.idle": "2024-12-29T16:59:27.935375Z",
     "shell.execute_reply": "2024-12-29T16:59:27.934443Z",
     "shell.execute_reply.started": "2024-12-29T16:59:27.925799Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# 数据精度量化压缩\n",
    "def reduce_mem_usage(df):\n",
    "    # 优化前的数据集内存大小\n",
    "    start_mem = df.memory_usage().sum() / 1024**2 \n",
    "    print('优化前的数据集内存大小 {:.2f} MB'.format(start_mem))\n",
    "    \n",
    "    # 遍历特征列\n",
    "    for col in df.columns:\n",
    "        # 当前特征类型\n",
    "        col_type = df[col].dtype\n",
    "        # 处理 numeric 型数据\n",
    "        if col_type != object:\n",
    "            c_min = df[col].min()  # 最小值\n",
    "            c_max = df[col].max()  # 最大值\n",
    "            # int 型数据 精度转换\n",
    "            if str(col_type)[:3] == 'int':\n",
    "                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n",
    "                    df[col] = df[col].astype(np.int8)\n",
    "                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:\n",
    "                    df[col] = df[col].astype(np.int16)\n",
    "                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:\n",
    "                    df[col] = df[col].astype(np.int32)\n",
    "                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:\n",
    "                    df[col] = df[col].astype(np.int64)  \n",
    "            # float 型数据 精度转换\n",
    "            else:\n",
    "                if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:\n",
    "                    df[col] = df[col].astype(np.float16)\n",
    "                elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:\n",
    "                    df[col] = df[col].astype(np.float32)\n",
    "                else:\n",
    "                    df[col] = df[col].astype(np.float64)\n",
    "        # 处理 object 型数据\n",
    "        else:\n",
    "            df[col] = df[col].astype('category')  # object 转 category\n",
    "    \n",
    "    # 处理后 数据集总内存计算\n",
    "    end_mem = df.memory_usage().sum() / 1024**2 \n",
    "    print('优化后的内存占用: {:.2f} MB'.format(end_mem))\n",
    "    print('减少的百分比 {:.1f}%'.format(100 * (start_mem - end_mem) / start_mem))\n",
    "    \n",
    "    return df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "函数 reduce_mem_usage(DataFrame):\n",
    "    1. 计算初始内存占用 start_mem\n",
    "    2. 遍历 DataFrame 的每一列:\n",
    "        a. 获取列的数据类型 col_type\n",
    "        b. 如果列是数值型数据:\n",
    "            i. 计算列的最小值 c_min 和最大值 c_max\n",
    "            ii. 如果是整型数据:\n",
    "                - 根据数据范围，将类型转换为 int8/int16/int32/int64 中最小的可用类型\n",
    "            iii. 如果是浮点型数据:\n",
    "                - 根据数据范围，将类型转换为 float16/float32/float64 中最小的可用类型\n",
    "        c. 如果列是字符串型数据:\n",
    "            - 将其类型转换为 category\n",
    "    3. 计算优化后的内存占用 end_mem\n",
    "    4. 打印优化前后的内存占用和减少百分比\n",
    "    5. 返回优化后的 DataFrame\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 对训练集的数据进行处理和精度量化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:27.936504Z",
     "iopub.status.busy": "2024-12-29T16:59:27.936240Z",
     "iopub.status.idle": "2024-12-29T16:59:36.855675Z",
     "shell.execute_reply": "2024-12-29T16:59:36.854777Z",
     "shell.execute_reply.started": "2024-12-29T16:59:27.936472Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "优化前的数据集内存大小 157.93 MB\n",
      "优化后的内存占用: 39.67 MB\n",
      "减少的百分比 74.9%\n"
     ]
    }
   ],
   "source": [
    "# 训练集特征处理与精度量化\n",
    "train_list = [] # 初始化一个空列表\n",
    "for items in train.values:\n",
    "    train_list.append([items[0]] + [float(i) for i in items[1].split(',')] + [items[2]])\n",
    "train = pd.DataFrame(np.array(train_list))\n",
    "train.columns = ['id'] + ['s_' + str(i) for i in range(len(train_list[0])-2)] + ['label']  # 特征分离\n",
    "train = reduce_mem_usage(train)  #调用 reduce_mem_usage 函数进行精度量化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "函数：训练集特征处理与精度量化(train)\n",
    "1. 初始化空列表 train_list\n",
    "\n",
    "2. 遍历 train 的每一行数据 items：\n",
    "   a. 将第一列（id）保留\n",
    "   b. 将第二列（heartbeat_signals）的字符串用逗号分隔，并将每个值转换为浮点数\n",
    "   c. 将第三列（label）保留\n",
    "   d. 将处理后的 id + heartbeat_signals + label 组合成一个新列表，追加到 train_list 中\n",
    "\n",
    "3. 将 train_list 转换为 NumPy 数组，再转换为 Pandas DataFrame 格式\n",
    "\n",
    "4. 设置 DataFrame 的列名：\n",
    "   a. 第一列命名为 'id'\n",
    "   b. 中间的列命名为 's_0', 's_1', ..., 's_204'，表示心跳信号序列的特征列\n",
    "   c. 最后一列命名为 'label'\n",
    "\n",
    "5. 调用 reduce_mem_usage 函数，对处理后的 DataFrame 进行精度量化，优化内存使用\n",
    "\n",
    "6. 返回处理完成的训练集 DataFrame\n",
    "```\n",
    "\n",
    "------\n",
    "\n",
    "**数据处理前后对比**\n",
    "\n",
    "原始训练集 `train.csv` 的部分内容如下：\n",
    "| id     | heartbeat_signals             | label |\n",
    "|--------|--------------------------------|-------|\n",
    "| 10001  | 0.1,0.2,0.3,...,0.4           | 0     |\n",
    "| 10002  | 0.5,0.6,0.7,...,0.8           | 1     |\n",
    "\n",
    "处理后生成的 DataFrame `train`：\n",
    "| id     | s_0  | s_1  | s_2  | ... | s_204 | label |\n",
    "|--------|------|------|------|-----|-------|-------|\n",
    "| 10001  | 0.1  | 0.2  | 0.3  | ... | 0.4   | 0     |\n",
    "| 10002  | 0.5  | 0.6  | 0.7  | ... | 0.8   | 1     |\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 对测试集的数据进行特征处理和内存优化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:36.858148Z",
     "iopub.status.busy": "2024-12-29T16:59:36.857924Z",
     "iopub.status.idle": "2024-12-29T16:59:38.583405Z",
     "shell.execute_reply": "2024-12-29T16:59:38.582584Z",
     "shell.execute_reply.started": "2024-12-29T16:59:36.858128Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "优化前的数据集内存大小 31.43 MB\n",
      "优化后的内存占用: 7.90 MB\n",
      "减少的百分比 74.9%\n"
     ]
    }
   ],
   "source": [
    "# 测试集特征处理与精度量化\n",
    "test_list=[]\n",
    "for items in test.values:\n",
    "    test_list.append([items[0]] + [float(i) for i in items[1].split(',')])\n",
    "test = pd.DataFrame(np.array(test_list))\n",
    "test.columns = ['id'] + ['s_'+str(i) for i in range(len(test_list[0])-1)]  # 特征分离\n",
    "test = reduce_mem_usage(test)  # 精度量化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "1. 初始化空列表 test_list\n",
    "\n",
    "2. 遍历测试集 test 的每一行 items:\n",
    "   a. 提取第一列（id）\n",
    "   b. 将第二列（heartbeat_signals）的字符串用逗号分隔，并将每个值转换为浮点数\n",
    "   c. 将 id + heartbeat_signals 合并为一个新列表，添加到 test_list\n",
    "\n",
    "3. 将 test_list 转换为 NumPy 数组，再转换为 Pandas DataFrame\n",
    "\n",
    "4. 设置 DataFrame 的列名：\n",
    "   a. 第一列命名为 'id'\n",
    "   b. 中间的列命名为 's_0', 's_1', ..., 's_N'，表示心跳信号序列的特征列（N 为信号序列长度）\n",
    "   \n",
    "5. 调用 reduce_mem_usage 函数：\n",
    "   a. 优化列数据类型，减少内存占用\n",
    "\n",
    "6. 返回处理后的测试集 DataFrame\n",
    "```\n",
    "\n",
    "**数据处理前后对比**\n",
    "\n",
    "假设原始测试集 `test.csv` 的部分内容如下：\n",
    "| id     | heartbeat_signals             |\n",
    "|--------|--------------------------------|\n",
    "| 20001  | 0.1,0.2,0.3,...,0.4           |\n",
    "| 20002  | 0.5,0.6,0.7,...,0.8           |\n",
    "\n",
    "处理后生成的 DataFrame `test`：\n",
    "| id     | s_0  | s_1  | s_2  | ... | s_204 |\n",
    "|--------|------|------|------|-----|-------|\n",
    "| 20001  | 0.1  | 0.2  | 0.3  | ... | 0.4   |\n",
    "| 20002  | 0.5  | 0.6  | 0.7  | ... | 0.8   |\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 处理训练集和测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:38.585255Z",
     "iopub.status.busy": "2024-12-29T16:59:38.585020Z",
     "iopub.status.idle": "2024-12-29T16:59:38.677967Z",
     "shell.execute_reply": "2024-12-29T16:59:38.677105Z",
     "shell.execute_reply.started": "2024-12-29T16:59:38.585235Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(100000, 205) (100000,)\n",
      "(20000, 205)\n",
      "(20000, 205, 1) float16\n"
     ]
    }
   ],
   "source": [
    "# 查看训练集, 分离标签与样本, 去除 id\n",
    "y_train = train['label']\n",
    "x_train = train.drop(['id', 'label'], axis=1)\n",
    "print(x_train.shape, y_train.shape)\n",
    "\n",
    "# 查看测试集, 去除 id\n",
    "X_test = test.drop(['id'], axis=1)\n",
    "print(X_test.shape)\n",
    "\n",
    "# 将测试集转换为适应 CNN 输入的 shape\n",
    "X_test = np.array(X_test).reshape(X_test.shape[0], X_test.shape[1], 1)\n",
    "print(X_test.shape, X_test.dtype)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 卷积神经网络（CNN）处理数据时需要三维输入格式，形状为 (样本数量, 特征数量, 通道数)。\n",
    "* 深度学习模型（如 CNN）只能接受 NumPy 数组或类似张量的输入格式\n",
    "* Shape 是数组或矩阵的“形状”，描述数据的维度结构，即数据在每个维度上的大小。\n",
    "    * 一维数据：形状如 (n,)，表示有 n 个元素。\n",
    "    * 二维数据：形状如 (m, n)，表示有 m 行，n 列。\n",
    "    * 三维数据：形状如 (batch_size, height, width)，常用于图片或序列。\n",
    "    * 四维数据：形状如 (batch_size, height, width, channels)，用于彩色图片的输入。\n",
    "* 灰度图像\n",
    "    * 灰度图像是没有颜色信息的图像，每个像素点只有一个值，表示黑白的强度（灰度值）。\n",
    "        * 灰度值的范围通常是 0（黑色）到 255（白色）。\n",
    "        * 示例：如果是彩色图片（如 RGB 图像），每个像素会有 3 个值（红、绿、蓝）。而灰度图像只有 1 个值。\n",
    "    * 类似性：\n",
    "        * 灰度图像是一种 2D 单通道数据。\n",
    "        * 心跳信号是一种 1D 单通道数据。\n",
    "        * 两者都只有一个维度的特征值，因此通道数为 1。\n",
    "\n",
    "-----\n",
    "\n",
    "```\n",
    "1. 处理训练集：\n",
    "   a. 从 train 中提取目标标签列 'label'，存入 y_train\n",
    "   b. 从 train 中删除 'id' 和 'label' 列，保留特征列，存入 x_train\n",
    "   c. 打印训练集特征矩阵和标签的形状 (x_train.shape, y_train.shape)\n",
    "\n",
    "2. 处理测试集：\n",
    "   a. 从 test 中删除 'id' 列，保留特征列，存入 X_test\n",
    "   b. 打印测试集特征矩阵的形状 (X_test.shape)\n",
    "\n",
    "3. 调整测试集形状以适配 CNN 输入：\n",
    "   a. 将 X_test 转换为 NumPy 数组\n",
    "   b. 调整 X_test 的形状为 (样本数量, 特征数量, 通道数)，通道数设为 1\n",
    "   c. 打印调整后的测试集形状和数据类型 (X_test.shape, X_test.dtype)\n",
    "\n",
    "返回：x_train, y_train, X_test\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据探索性分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 基本分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 查看数据集的前 5 行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:38.679081Z",
     "iopub.status.busy": "2024-12-29T16:59:38.678811Z",
     "iopub.status.idle": "2024-12-29T16:59:38.705460Z",
     "shell.execute_reply": "2024-12-29T16:59:38.704826Z",
     "shell.execute_reply.started": "2024-12-29T16:59:38.679058Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>s_0</th>\n",
       "      <th>s_1</th>\n",
       "      <th>s_2</th>\n",
       "      <th>s_3</th>\n",
       "      <th>s_4</th>\n",
       "      <th>s_5</th>\n",
       "      <th>s_6</th>\n",
       "      <th>s_7</th>\n",
       "      <th>s_8</th>\n",
       "      <th>...</th>\n",
       "      <th>s_196</th>\n",
       "      <th>s_197</th>\n",
       "      <th>s_198</th>\n",
       "      <th>s_199</th>\n",
       "      <th>s_200</th>\n",
       "      <th>s_201</th>\n",
       "      <th>s_202</th>\n",
       "      <th>s_203</th>\n",
       "      <th>s_204</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.991211</td>\n",
       "      <td>0.943359</td>\n",
       "      <td>0.764648</td>\n",
       "      <td>0.618652</td>\n",
       "      <td>0.379639</td>\n",
       "      <td>0.190796</td>\n",
       "      <td>0.040222</td>\n",
       "      <td>0.026001</td>\n",
       "      <td>0.031708</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.971680</td>\n",
       "      <td>0.929199</td>\n",
       "      <td>0.572754</td>\n",
       "      <td>0.178467</td>\n",
       "      <td>0.122986</td>\n",
       "      <td>0.132324</td>\n",
       "      <td>0.094421</td>\n",
       "      <td>0.089600</td>\n",
       "      <td>0.030487</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.958984</td>\n",
       "      <td>0.701172</td>\n",
       "      <td>0.231812</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.080688</td>\n",
       "      <td>0.128418</td>\n",
       "      <td>0.187500</td>\n",
       "      <td>0.280762</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.975586</td>\n",
       "      <td>0.934082</td>\n",
       "      <td>0.659668</td>\n",
       "      <td>0.249878</td>\n",
       "      <td>0.237061</td>\n",
       "      <td>0.281494</td>\n",
       "      <td>0.249878</td>\n",
       "      <td>0.249878</td>\n",
       "      <td>0.241455</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.055817</td>\n",
       "      <td>0.261230</td>\n",
       "      <td>0.359863</td>\n",
       "      <td>0.433105</td>\n",
       "      <td>0.453613</td>\n",
       "      <td>0.499023</td>\n",
       "      <td>0.542969</td>\n",
       "      <td>0.616699</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 207 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    id       s_0       s_1       s_2       s_3       s_4       s_5       s_6  \\\n",
       "0  0.0  0.991211  0.943359  0.764648  0.618652  0.379639  0.190796  0.040222   \n",
       "1  1.0  0.971680  0.929199  0.572754  0.178467  0.122986  0.132324  0.094421   \n",
       "2  2.0  1.000000  0.958984  0.701172  0.231812  0.000000  0.080688  0.128418   \n",
       "3  3.0  0.975586  0.934082  0.659668  0.249878  0.237061  0.281494  0.249878   \n",
       "4  4.0  0.000000  0.055817  0.261230  0.359863  0.433105  0.453613  0.499023   \n",
       "\n",
       "        s_7       s_8  ...  s_196  s_197  s_198  s_199  s_200  s_201  s_202  \\\n",
       "0  0.026001  0.031708  ...    0.0    0.0    0.0    0.0    0.0    0.0    0.0   \n",
       "1  0.089600  0.030487  ...    0.0    0.0    0.0    0.0    0.0    0.0    0.0   \n",
       "2  0.187500  0.280762  ...    0.0    0.0    0.0    0.0    0.0    0.0    0.0   \n",
       "3  0.249878  0.241455  ...    0.0    0.0    0.0    0.0    0.0    0.0    0.0   \n",
       "4  0.542969  0.616699  ...    0.0    0.0    0.0    0.0    0.0    0.0    0.0   \n",
       "\n",
       "   s_203  s_204  label  \n",
       "0    0.0    0.0    0.0  \n",
       "1    0.0    0.0    0.0  \n",
       "2    0.0    0.0    2.0  \n",
       "3    0.0    0.0    0.0  \n",
       "4    0.0    0.0    2.0  \n",
       "\n",
       "[5 rows x 207 columns]"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()  # 查看前 5 条信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:38.706407Z",
     "iopub.status.busy": "2024-12-29T16:59:38.706187Z",
     "iopub.status.idle": "2024-12-29T16:59:38.729718Z",
     "shell.execute_reply": "2024-12-29T16:59:38.728962Z",
     "shell.execute_reply.started": "2024-12-29T16:59:38.706387Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>s_0</th>\n",
       "      <th>s_1</th>\n",
       "      <th>s_2</th>\n",
       "      <th>s_3</th>\n",
       "      <th>s_4</th>\n",
       "      <th>s_5</th>\n",
       "      <th>s_6</th>\n",
       "      <th>s_7</th>\n",
       "      <th>s_8</th>\n",
       "      <th>...</th>\n",
       "      <th>s_195</th>\n",
       "      <th>s_196</th>\n",
       "      <th>s_197</th>\n",
       "      <th>s_198</th>\n",
       "      <th>s_199</th>\n",
       "      <th>s_200</th>\n",
       "      <th>s_201</th>\n",
       "      <th>s_202</th>\n",
       "      <th>s_203</th>\n",
       "      <th>s_204</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100000.0</td>\n",
       "      <td>0.991699</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.631836</td>\n",
       "      <td>0.136230</td>\n",
       "      <td>0.041412</td>\n",
       "      <td>0.102722</td>\n",
       "      <td>0.120850</td>\n",
       "      <td>0.123413</td>\n",
       "      <td>0.107910</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>100001.0</td>\n",
       "      <td>0.607422</td>\n",
       "      <td>0.541504</td>\n",
       "      <td>0.340576</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.090698</td>\n",
       "      <td>0.164917</td>\n",
       "      <td>0.195068</td>\n",
       "      <td>0.168823</td>\n",
       "      <td>0.198853</td>\n",
       "      <td>...</td>\n",
       "      <td>0.389893</td>\n",
       "      <td>0.386963</td>\n",
       "      <td>0.367188</td>\n",
       "      <td>0.364014</td>\n",
       "      <td>0.360596</td>\n",
       "      <td>0.357178</td>\n",
       "      <td>0.350586</td>\n",
       "      <td>0.350586</td>\n",
       "      <td>0.350586</td>\n",
       "      <td>0.36377</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>100002.0</td>\n",
       "      <td>0.975098</td>\n",
       "      <td>0.670898</td>\n",
       "      <td>0.686523</td>\n",
       "      <td>0.708496</td>\n",
       "      <td>0.718750</td>\n",
       "      <td>0.716797</td>\n",
       "      <td>0.720703</td>\n",
       "      <td>0.701660</td>\n",
       "      <td>0.596680</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>100003.0</td>\n",
       "      <td>0.995605</td>\n",
       "      <td>0.916992</td>\n",
       "      <td>0.520996</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.221802</td>\n",
       "      <td>0.404053</td>\n",
       "      <td>0.490479</td>\n",
       "      <td>0.527344</td>\n",
       "      <td>0.518066</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100004.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.888184</td>\n",
       "      <td>0.745605</td>\n",
       "      <td>0.531738</td>\n",
       "      <td>0.380371</td>\n",
       "      <td>0.224609</td>\n",
       "      <td>0.091125</td>\n",
       "      <td>0.057648</td>\n",
       "      <td>0.003914</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 206 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         id       s_0       s_1       s_2       s_3       s_4       s_5  \\\n",
       "0  100000.0  0.991699  1.000000  0.631836  0.136230  0.041412  0.102722   \n",
       "1  100001.0  0.607422  0.541504  0.340576  0.000000  0.090698  0.164917   \n",
       "2  100002.0  0.975098  0.670898  0.686523  0.708496  0.718750  0.716797   \n",
       "3  100003.0  0.995605  0.916992  0.520996  0.000000  0.221802  0.404053   \n",
       "4  100004.0  1.000000  0.888184  0.745605  0.531738  0.380371  0.224609   \n",
       "\n",
       "        s_6       s_7       s_8  ...     s_195     s_196     s_197     s_198  \\\n",
       "0  0.120850  0.123413  0.107910  ...  0.000000  0.000000  0.000000  0.000000   \n",
       "1  0.195068  0.168823  0.198853  ...  0.389893  0.386963  0.367188  0.364014   \n",
       "2  0.720703  0.701660  0.596680  ...  0.000000  0.000000  0.000000  0.000000   \n",
       "3  0.490479  0.527344  0.518066  ...  0.000000  0.000000  0.000000  0.000000   \n",
       "4  0.091125  0.057648  0.003914  ...  0.000000  0.000000  0.000000  0.000000   \n",
       "\n",
       "      s_199     s_200     s_201     s_202     s_203    s_204  \n",
       "0  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  \n",
       "1  0.360596  0.357178  0.350586  0.350586  0.350586  0.36377  \n",
       "2  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  \n",
       "3  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  \n",
       "4  0.000000  0.000000  0.000000  0.000000  0.000000  0.00000  \n",
       "\n",
       "[5 rows x 206 columns]"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.head()  # 查看前 5 条信息"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据统计摘要"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:38.730662Z",
     "iopub.status.busy": "2024-12-29T16:59:38.730418Z",
     "iopub.status.idle": "2024-12-29T16:59:40.940888Z",
     "shell.execute_reply": "2024-12-29T16:59:40.940080Z",
     "shell.execute_reply.started": "2024-12-29T16:59:38.730642Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>s_0</th>\n",
       "      <th>s_1</th>\n",
       "      <th>s_2</th>\n",
       "      <th>s_3</th>\n",
       "      <th>s_4</th>\n",
       "      <th>s_5</th>\n",
       "      <th>s_6</th>\n",
       "      <th>s_7</th>\n",
       "      <th>s_8</th>\n",
       "      <th>...</th>\n",
       "      <th>s_196</th>\n",
       "      <th>s_197</th>\n",
       "      <th>s_198</th>\n",
       "      <th>s_199</th>\n",
       "      <th>s_200</th>\n",
       "      <th>s_201</th>\n",
       "      <th>s_202</th>\n",
       "      <th>s_203</th>\n",
       "      <th>s_204</th>\n",
       "      <th>label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>100000.0</td>\n",
       "      <td>100000.0</td>\n",
       "      <td>100000.000000</td>\n",
       "      <td>100000.0</td>\n",
       "      <td>100000.0</td>\n",
       "      <td>100000.0</td>\n",
       "      <td>100000.0</td>\n",
       "      <td>100000.0</td>\n",
       "      <td>100000.0</td>\n",
       "      <td>100000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>49999.500000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>28867.658203</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>24999.750000</td>\n",
       "      <td>0.913086</td>\n",
       "      <td>0.694824</td>\n",
       "      <td>0.346436</td>\n",
       "      <td>0.096191</td>\n",
       "      <td>0.129883</td>\n",
       "      <td>0.134521</td>\n",
       "      <td>0.112183</td>\n",
       "      <td>0.101013</td>\n",
       "      <td>0.100586</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>49999.500000</td>\n",
       "      <td>0.984375</td>\n",
       "      <td>0.859375</td>\n",
       "      <td>0.548828</td>\n",
       "      <td>0.282471</td>\n",
       "      <td>0.238037</td>\n",
       "      <td>0.245850</td>\n",
       "      <td>0.226562</td>\n",
       "      <td>0.233765</td>\n",
       "      <td>0.235352</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>74999.250000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.933105</td>\n",
       "      <td>0.685547</td>\n",
       "      <td>0.519531</td>\n",
       "      <td>0.431396</td>\n",
       "      <td>0.443115</td>\n",
       "      <td>0.450439</td>\n",
       "      <td>0.432373</td>\n",
       "      <td>0.396484</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>99999.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.983887</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 207 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  id            s_0            s_1            s_2  \\\n",
       "count  100000.000000  100000.000000  100000.000000  100000.000000   \n",
       "mean    49999.500000            NaN            NaN       0.000000   \n",
       "std     28867.658203       0.000000       0.000000       0.000000   \n",
       "min         0.000000       0.000000       0.000000       0.000000   \n",
       "25%     24999.750000       0.913086       0.694824       0.346436   \n",
       "50%     49999.500000       0.984375       0.859375       0.548828   \n",
       "75%     74999.250000       1.000000       0.933105       0.685547   \n",
       "max     99999.000000       1.000000       1.000000       1.000000   \n",
       "\n",
       "                 s_3            s_4            s_5            s_6  \\\n",
       "count  100000.000000  100000.000000  100000.000000  100000.000000   \n",
       "mean        0.000000       0.000000       0.000000       0.000000   \n",
       "std         0.000000       0.000000       0.000000       0.000000   \n",
       "min         0.000000       0.000000       0.000000       0.000000   \n",
       "25%         0.096191       0.129883       0.134521       0.112183   \n",
       "50%         0.282471       0.238037       0.245850       0.226562   \n",
       "75%         0.519531       0.431396       0.443115       0.450439   \n",
       "max         1.000000       1.000000       1.000000       1.000000   \n",
       "\n",
       "                 s_7            s_8  ...     s_196     s_197          s_198  \\\n",
       "count  100000.000000  100000.000000  ...  100000.0  100000.0  100000.000000   \n",
       "mean        0.000000       0.000000  ...       0.0       0.0       0.000000   \n",
       "std         0.000000       0.000000  ...       0.0       0.0       0.000000   \n",
       "min         0.000000       0.000000  ...       0.0       0.0       0.000000   \n",
       "25%         0.101013       0.100586  ...       0.0       0.0       0.000000   \n",
       "50%         0.233765       0.235352  ...       0.0       0.0       0.000000   \n",
       "75%         0.432373       0.396484  ...       0.0       0.0       0.000000   \n",
       "max         1.000000       1.000000  ...       1.0       1.0       0.983887   \n",
       "\n",
       "          s_199     s_200     s_201     s_202     s_203     s_204     label  \n",
       "count  100000.0  100000.0  100000.0  100000.0  100000.0  100000.0  100000.0  \n",
       "mean        0.0       0.0       0.0       0.0       0.0       0.0       NaN  \n",
       "std         0.0       0.0       0.0       0.0       0.0       0.0       0.0  \n",
       "min         0.0       0.0       0.0       0.0       0.0       0.0       0.0  \n",
       "25%         0.0       0.0       0.0       0.0       0.0       0.0       0.0  \n",
       "50%         0.0       0.0       0.0       0.0       0.0       0.0       0.0  \n",
       "75%         0.0       0.0       0.0       0.0       0.0       0.0       2.0  \n",
       "max         1.0       1.0       1.0       1.0       1.0       1.0       3.0  \n",
       "\n",
       "[8 rows x 207 columns]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore', category=RuntimeWarning)\n",
    "\n",
    "train.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用 Python 的 warnings 模块临时忽略警告：\n",
    "* 数据中存在异常值（过大或过小）。\n",
    "* 数据中存在 NaN 或 Infinity。\n",
    "* 数据类型的精度不足，导致溢出。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:40.941924Z",
     "iopub.status.busy": "2024-12-29T16:59:40.941713Z",
     "iopub.status.idle": "2024-12-29T16:59:41.605374Z",
     "shell.execute_reply": "2024-12-29T16:59:41.604548Z",
     "shell.execute_reply.started": "2024-12-29T16:59:40.941905Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>s_0</th>\n",
       "      <th>s_1</th>\n",
       "      <th>s_2</th>\n",
       "      <th>s_3</th>\n",
       "      <th>s_4</th>\n",
       "      <th>s_5</th>\n",
       "      <th>s_6</th>\n",
       "      <th>s_7</th>\n",
       "      <th>s_8</th>\n",
       "      <th>...</th>\n",
       "      <th>s_195</th>\n",
       "      <th>s_196</th>\n",
       "      <th>s_197</th>\n",
       "      <th>s_198</th>\n",
       "      <th>s_199</th>\n",
       "      <th>s_200</th>\n",
       "      <th>s_201</th>\n",
       "      <th>s_202</th>\n",
       "      <th>s_203</th>\n",
       "      <th>s_204</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "      <td>20000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>109999.500000</td>\n",
       "      <td>0.872559</td>\n",
       "      <td>0.772461</td>\n",
       "      <td>0.514648</td>\n",
       "      <td>0.323242</td>\n",
       "      <td>0.301270</td>\n",
       "      <td>0.303955</td>\n",
       "      <td>0.292725</td>\n",
       "      <td>0.281738</td>\n",
       "      <td>0.270996</td>\n",
       "      <td>...</td>\n",
       "      <td>0.008499</td>\n",
       "      <td>0.007965</td>\n",
       "      <td>0.007450</td>\n",
       "      <td>0.007214</td>\n",
       "      <td>0.006939</td>\n",
       "      <td>0.006599</td>\n",
       "      <td>0.006386</td>\n",
       "      <td>0.005981</td>\n",
       "      <td>0.005295</td>\n",
       "      <td>0.005150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>5773.646973</td>\n",
       "      <td>0.263916</td>\n",
       "      <td>0.237549</td>\n",
       "      <td>0.241699</td>\n",
       "      <td>0.256592</td>\n",
       "      <td>0.226685</td>\n",
       "      <td>0.215088</td>\n",
       "      <td>0.218262</td>\n",
       "      <td>0.212036</td>\n",
       "      <td>0.200073</td>\n",
       "      <td>...</td>\n",
       "      <td>0.061371</td>\n",
       "      <td>0.059784</td>\n",
       "      <td>0.058044</td>\n",
       "      <td>0.056641</td>\n",
       "      <td>0.056061</td>\n",
       "      <td>0.054382</td>\n",
       "      <td>0.053833</td>\n",
       "      <td>0.051910</td>\n",
       "      <td>0.048462</td>\n",
       "      <td>0.047272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>100000.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>104999.750000</td>\n",
       "      <td>0.910645</td>\n",
       "      <td>0.690918</td>\n",
       "      <td>0.341003</td>\n",
       "      <td>0.097336</td>\n",
       "      <td>0.129272</td>\n",
       "      <td>0.134155</td>\n",
       "      <td>0.111816</td>\n",
       "      <td>0.101379</td>\n",
       "      <td>0.100403</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>109999.500000</td>\n",
       "      <td>0.983887</td>\n",
       "      <td>0.857422</td>\n",
       "      <td>0.545410</td>\n",
       "      <td>0.279785</td>\n",
       "      <td>0.237305</td>\n",
       "      <td>0.247437</td>\n",
       "      <td>0.227722</td>\n",
       "      <td>0.233765</td>\n",
       "      <td>0.236694</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>114999.250000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.932617</td>\n",
       "      <td>0.683105</td>\n",
       "      <td>0.515137</td>\n",
       "      <td>0.429199</td>\n",
       "      <td>0.443848</td>\n",
       "      <td>0.451904</td>\n",
       "      <td>0.436523</td>\n",
       "      <td>0.401123</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>119999.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.998535</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.978516</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.990234</td>\n",
       "      <td>0.999023</td>\n",
       "      <td>0.843262</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 206 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  id           s_0           s_1           s_2           s_3  \\\n",
       "count   20000.000000  20000.000000  20000.000000  20000.000000  20000.000000   \n",
       "mean   109999.500000      0.872559      0.772461      0.514648      0.323242   \n",
       "std      5773.646973      0.263916      0.237549      0.241699      0.256592   \n",
       "min    100000.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%    104999.750000      0.910645      0.690918      0.341003      0.097336   \n",
       "50%    109999.500000      0.983887      0.857422      0.545410      0.279785   \n",
       "75%    114999.250000      1.000000      0.932617      0.683105      0.515137   \n",
       "max    119999.000000      1.000000      1.000000      1.000000      0.998535   \n",
       "\n",
       "                s_4           s_5           s_6           s_7           s_8  \\\n",
       "count  20000.000000  20000.000000  20000.000000  20000.000000  20000.000000   \n",
       "mean       0.301270      0.303955      0.292725      0.281738      0.270996   \n",
       "std        0.226685      0.215088      0.218262      0.212036      0.200073   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.129272      0.134155      0.111816      0.101379      0.100403   \n",
       "50%        0.237305      0.247437      0.227722      0.233765      0.236694   \n",
       "75%        0.429199      0.443848      0.451904      0.436523      0.401123   \n",
       "max        1.000000      1.000000      1.000000      1.000000      1.000000   \n",
       "\n",
       "       ...         s_195         s_196         s_197         s_198  \\\n",
       "count  ...  20000.000000  20000.000000  20000.000000  20000.000000   \n",
       "mean   ...      0.008499      0.007965      0.007450      0.007214   \n",
       "std    ...      0.061371      0.059784      0.058044      0.056641   \n",
       "min    ...      0.000000      0.000000      0.000000      0.000000   \n",
       "25%    ...      0.000000      0.000000      0.000000      0.000000   \n",
       "50%    ...      0.000000      0.000000      0.000000      0.000000   \n",
       "75%    ...      0.000000      0.000000      0.000000      0.000000   \n",
       "max    ...      1.000000      1.000000      1.000000      0.978516   \n",
       "\n",
       "              s_199         s_200         s_201         s_202         s_203  \\\n",
       "count  20000.000000  20000.000000  20000.000000  20000.000000  20000.000000   \n",
       "mean       0.006939      0.006599      0.006386      0.005981      0.005295   \n",
       "std        0.056061      0.054382      0.053833      0.051910      0.048462   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        1.000000      1.000000      1.000000      0.990234      0.999023   \n",
       "\n",
       "              s_204  \n",
       "count  20000.000000  \n",
       "mean       0.005150  \n",
       "std        0.047272  \n",
       "min        0.000000  \n",
       "25%        0.000000  \n",
       "50%        0.000000  \n",
       "75%        0.000000  \n",
       "max        0.843262  \n",
       "\n",
       "[8 rows x 206 columns]"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 查看数据集的整体信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:41.606455Z",
     "iopub.status.busy": "2024-12-29T16:59:41.606151Z",
     "iopub.status.idle": "2024-12-29T16:59:41.615801Z",
     "shell.execute_reply": "2024-12-29T16:59:41.615056Z",
     "shell.execute_reply.started": "2024-12-29T16:59:41.606430Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 100000 entries, 0 to 99999\n",
      "Columns: 207 entries, id to label\n",
      "dtypes: float16(206), float32(1)\n",
      "memory usage: 39.7 MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "info() 方法返回数据框的整体信息，包括：\n",
    "* 每列的名称。\n",
    "* 数据类型（如 int64、float64、object 等）。\n",
    "* 非空值的数量。\n",
    "* 数据框占用的内存大小。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:41.616872Z",
     "iopub.status.busy": "2024-12-29T16:59:41.616606Z",
     "iopub.status.idle": "2024-12-29T16:59:41.636860Z",
     "shell.execute_reply": "2024-12-29T16:59:41.636043Z",
     "shell.execute_reply.started": "2024-12-29T16:59:41.616850Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 20000 entries, 0 to 19999\n",
      "Columns: 206 entries, id to s_204\n",
      "dtypes: float16(205), float32(1)\n",
      "memory usage: 7.9 MB\n"
     ]
    }
   ],
   "source": [
    "test.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**结论**\n",
    "\n",
    "综上可知：\n",
    "* 主要的特征数据为 1 维信号振幅 (已被归一化至 0～1 了)，总长度均为 205 (205 个时间节点/心跳节拍)\n",
    "* 同时，除波形数据外，没有任何辅助或先验信息可以利用\n",
    "* 波形数据均已被量化为 float16 类型的数值型特征，且没有类别型特征需要考虑\n",
    "* 没有缺失值，无需填充，非常理想 —— 事实上，未采集到的信号默认振幅就是 0，故不存在缺失值的问题\n",
    "* 显然，这类非表格数据更适合用神经网络来处理，而非传统机器学习模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 查看类别分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:41.637966Z",
     "iopub.status.busy": "2024-12-29T16:59:41.637726Z",
     "iopub.status.idle": "2024-12-29T16:59:41.858216Z",
     "shell.execute_reply": "2024-12-29T16:59:41.857520Z",
     "shell.execute_reply.started": "2024-12-29T16:59:41.637947Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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m5urmpoab100GtWWLVsUDAYlScFgUK2traqvr/dq1q1bp87OThUVFXk1Gzdu1PHjx72a6upqjRo1Sv379/dqTt5PV03Xfrrj9/sVCARiFgAA4Ka4Q84XX3yhhoYGNTQ0SPrzl40bGhq0b98+JSUlaf78+frXf/1X/eY3v1FjY6P+/u//Xnl5eZo2bZok6eqrr9Z3vvMd3X///dq6daveeecdzZs3T9/73veUl5cnSfrbv/1b+Xw+zZ49W7t27dKKFSv09NNPq6yszBvHww8/rDVr1ujHP/6x3n//fT322GPatm2b5s2b9/VnBQAA9H7xvra1fv16k3TKMmvWLDP782vkP/jBDywnJ8f8fr/dcsst1tTUFNPHH//4R5sxY4b169fPAoGA3XPPPXb48OGYmt/97nd2ww03mN/vt8svv9yWLl16ylheffVVu+qqq8zn89nYsWPtzTffjOtYeIWc10CBi06irwNcOy5eif73fBGdGz29fyf9ed76pmg0qqysLEUikXP/o6ukpHPb34XQd08F4OLBtQOnw7nh6en9u0+9XQUAAPoOQg4AAHASIQcAADiJkAMAAJxEyAEAAE4i5AAAACcRcgAAgJMIOQAAwEmEHAAA4CRCDgAAcBIhBwAAOImQAwAAnETIAQAATiLkAAAAJxFyAACAkwg5AADASYQcAADgJEIOAABwEiEHAAA4iZADAACcRMgBAABOIuQAAAAnEXIAAICTCDkAAMBJhBwAAOAkQg4AAHASIQcAADiJkAMAAJxEyAEAAE5KTfQAgD4nKSnRIzg7ZokeAQDEhSc5AADASYQcAADgJEIOAABwEiEHAAA4iZADAACcRMgBAABOIuQAAAAnEXIAAICTCDkAAMBJhBwAAOAkQg4AAHASIQcAADiJkAMAAJxEyAEAAE7q9SGnsrJSw4cPV3p6uoqKirR169ZEDwkAAFwEenXIWbFihcrKyrRkyRJt375dEyZMUCgUUktLS6KHBgAAEqxXh5yf/OQnuv/++3XPPfdozJgxev7555WZmamf/exniR4aAABIsNRED+Bstbe3q76+XuXl5d665ORkFRcXq66urttt2tra1NbW5n2ORCKSpGg0en4H21swDzgTzg+cDucGTuc8nRtd920zO2Ndrw05n332mTo6OpSTkxOzPicnR++//36321RUVOjxxx8/ZX1+fv55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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(train['label'], orientation = 'vertical', histtype = 'bar', color = 'red')\n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对训练集 train 中的 label 列（目标变量）绘制柱状图（直方图），以可视化每个类别的分布情况"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**结论**\n",
    "\n",
    "* 从柱状图可以发现类别 0 的样本数量远多于其他类别。\n",
    "* 类别不平衡可能会影响模型的训练效果，需要采取措施处理（如过采样、下采样或调整类别权重）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**用 SMOTE 对少数类别上采样效果最好：**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:41.859220Z",
     "iopub.status.busy": "2024-12-29T16:59:41.858942Z",
     "iopub.status.idle": "2024-12-29T16:59:53.876072Z",
     "shell.execute_reply": "2024-12-29T16:59:53.875282Z",
     "shell.execute_reply.started": "2024-12-29T16:59:41.859196Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after smote, k_x_train.shape: (257308, 205), k_y_train.shape: (257308,)\n"
     ]
    },
    {
     "data": {
      "image/png": "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7NixcjqdGj58uEpKSs67flFRkYYNG6bo6GilpaVpz549l3I7AADAIB0OOe+//75+97vf6cYbbwzaP2/ePL355pvasGGDKioqdOzYMd133332eHNzszIyMtTU1KSdO3dqzZo1KikpUX5+vl1z5MgRZWRkaOLEiaqurlZubq4efvhhbd261a5Zt26d8vLyVFBQoH379mnMmDHyer2qr6/v6C0BAACDdCjknDp1StOnT9eLL76oa665xt7v9/v1+9//XsuWLdNdd92l1NRUvfLKK9q5c6d27dolSXrnnXf04Ycf6tVXX1VKSoruuecePf300yoqKlJTU5Mkqbi4WElJSVq6dKlGjRqlnJwc3X///Vq+fLl9rWXLlmnWrFmaOXOmkpOTVVxcrN69e+vll1++lPUAAACG6FDIyc7OVkZGhtLT04P2V1VV6cyZM0H7R44cqSFDhqiyslKSVFlZqdGjRysuLs6u8Xq9CgQCOnjwoF3z3XN7vV77HE1NTaqqqgqqiYyMVHp6ul3TlsbGRgUCgaANAACYqUeoB7z++uvat2+f3n///fPGfD6fHA6HYmJigvbHxcXJ5/PZNecGnNbx1rGL1QQCAX3zzTc6ceKEmpub26w5dOjQBedeWFioxYsXt+9GAQBAWAvpnZyjR4/q0Ucf1Wuvvabo6OgrNacrZuHChfL7/fZ29OjRrp4SAAC4QkIKOVVVVaqvr9fYsWPVo0cP9ejRQxUVFXr++efVo0cPxcXFqampSSdPngw6rq6uTvHx8ZKk+Pj4875t1frz99W4XC716tVLAwcOVFRUVJs1redoi9PplMvlCtoAAICZQgo5d999t2pqalRdXW1v48aN0/Tp0+3/3bNnT5WXl9vHHD58WLW1tfJ4PJIkj8ejmpqaoG9BlZWVyeVyKTk52a459xytNa3ncDgcSk1NDappaWlReXm5XQMAALq3kD6T069fP91www1B+/r06aMBAwbY+7OyspSXl6f+/fvL5XLpkUcekcfj0YQJEyRJkyZNUnJysmbMmKElS5bI5/Np0aJFys7OltPplCTNmTNHK1eu1Pz58/XQQw9p27ZtWr9+vbZs2WJfNy8vT5mZmRo3bpzGjx+v5557Tg0NDZo5c+YlLQgAADBDyB88/j7Lly9XZGSkpkyZosbGRnm9Xq1atcoej4qK0ubNmzV37lx5PB716dNH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s2dbMTExls/nsyzLsmbMmGEtWLDArn/vvfesHj16WP/8z/9sffTRR1ZBQYHVs2dPq6ampqtuodOEulaLFy+2tm7dan366adWVVWVNW3aNCs6Oto6ePBgV91Cp/n666+t/fv3W/v377ckWcuWLbP2799v/fnPf7Ysy7IWLFhgzZgxw67/7LPPrN69e1uPP/649dFHH1lFRUVWVFSUVVpa2lW30GlCXavly5dbmzZtsj7++GOrpqbGevTRR63IyEjr3//937vqFjrN3LlzLbfbbW3fvt364osv7O3//u//7Bpes/6iI2vVXV+zFixYYFVUVFhHjhyxPvjgA2vBggVWRESE9c4771iWdfX0FCGng/7lX/7FGjJkiOVwOKzx48dbu3btssd+9KMfWZmZmUH169evt374wx9aDofDuv76660tW7Z08oy7TihrlZuba9fGxcVZ9957r7Vv374umHXna/2a83e31vXJzMy0fvSjH513TEpKiuVwOKwf/OAH1iuvvNLp8+4Koa7VP/3TP1l/9Vd/ZUVHR1v9+/e37rzzTmvbtm1dM/lO1tY6SQrqFV6z/qIja9VdX7Meeugha+jQoZbD4bCuvfZa6+6777YDjmVdPT0VYVmWdWXfKwIAAOh8fCYHAAAYiZADAACMRMgBAABGIuQAAAAjEXIAAICRCDkAAMBIhBwAAGAkQg4AADASIQcAABiJkAMAAIxEyAEAAEYi5AAAACP9P+WWr+s1spg0AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\", category=FutureWarning)\n",
    "\n",
    "# 使用 SMOTE 对数据进行上采样以解决类别不平衡问题\n",
    "smote = SMOTE(random_state=2021, n_jobs=-1)\n",
    "k_x_train, k_y_train = smote.fit_resample(x_train, y_train)  \n",
    "print(f\"after smote, k_x_train.shape: {k_x_train.shape}, k_y_train.shape: {k_y_train.shape}\")\n",
    "# 将训练集转换为适应 CNN 输入的 shape\n",
    "k_x_train = np.array(k_x_train).reshape(k_x_train.shape[0], k_x_train.shape[1], 1)\n",
    "\n",
    "plt.hist(k_y_train, orientation = 'vertical', histtype = 'bar', color = 'green')\n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 辅助函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:53.877267Z",
     "iopub.status.busy": "2024-12-29T16:59:53.876983Z",
     "iopub.status.idle": "2024-12-29T16:59:53.880961Z",
     "shell.execute_reply": "2024-12-29T16:59:53.880241Z",
     "shell.execute_reply.started": "2024-12-29T16:59:53.877242Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# 评估函数\n",
    "def abs_sum(y_pred, y_true):\n",
    "    y_pred = np.array(y_pred)\n",
    "    y_true = np.array(y_true)\n",
    "    loss = sum(sum(abs(y_pred-y_true)))\n",
    "    return loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用于计算模型预测结果和真实标签之间的误差的绝对值之和（absolute sum）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 模型训练与推理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**为何使用简单网络**\n",
    "* 数据特征单一，复杂网络易过拟合。\n",
    "* 通过 Dropout 和池化层平衡了模型复杂度。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Net 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:53.881968Z",
     "iopub.status.busy": "2024-12-29T16:59:53.881708Z",
     "iopub.status.idle": "2024-12-29T16:59:53.898819Z",
     "shell.execute_reply": "2024-12-29T16:59:53.898074Z",
     "shell.execute_reply.started": "2024-12-29T16:59:53.881947Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "class Net1(K.Model):\n",
    "    def __init__(self):\n",
    "        super(Net1, self).__init__()\n",
    "        self.conv1 = Conv1D(filters=16, kernel_size=3, padding='same', activation='relu', input_shape = (205, 1))\n",
    "        self.conv2 = Conv1D(filters=32, kernel_size=3, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.conv3 = Conv1D(filters=64, kernel_size=3, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.conv4 = Conv1D(filters=64, kernel_size=5, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.max_pool1 = MaxPool1D(pool_size=3, strides=2, padding='same')\n",
    "        \n",
    "        self.conv5 = Conv1D(filters=128, kernel_size=5, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.conv6 = Conv1D(filters=128, kernel_size=5, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.max_pool2 = MaxPool1D(pool_size=3, strides=2, padding='same')\n",
    "        \n",
    "        self.dropout = Dropout(0.5)\n",
    "        self.flatten = Flatten()\n",
    "        \n",
    "        self.fc1 = Dense(units=256, activation='relu')\n",
    "        self.fc21 = Dense(units=16, activation='relu')\n",
    "        self.fc22 = Dense(units=256, activation='sigmoid')\n",
    "        self.fc3 = Dense(units=4, activation='softmax')\n",
    "            \n",
    "    def call(self, x):\n",
    "        x = self.conv1(x)\n",
    "        x = self.conv2(x)\n",
    "        x = self.conv3(x)\n",
    "        x = self.conv4(x)\n",
    "        x = self.max_pool1(x)\n",
    "        \n",
    "        x = self.conv5(x)\n",
    "        x = self.conv6(x) \n",
    "        x = self.max_pool2(x)\n",
    "        \n",
    "        x = self.dropout(x)\n",
    "        x = self.flatten(x)\n",
    "        \n",
    "        x1 = self.fc1(x)\n",
    "        x2 = self.fc22(self.fc21(x))\n",
    "        x = self.fc3(x1+x2)\n",
    "        \n",
    "        return x "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 输入数据：\n",
    "   形状为 (batch_size, 205, 1)，表示 205 个时间点的单通道信号。\n",
    "2. 卷积层：\n",
    "   使用膨胀卷积扩大感受野，提取时间序列中的局部和全局特征。\n",
    "   卷积核大小分别为 3 和 5，层间特征数逐步增加。\n",
    "3. 池化层：\n",
    "   下采样，减少特征维度。\n",
    "4. Dropout：\n",
    "   随机丢弃部分神经元，防止过拟合。\n",
    "5. 全连接层：\n",
    "    分支1 提取补充特征。主分支和分支结果相加。\n",
    "6. 输出层：\n",
    "    使用 Softmax 输出分类概率，最终实现 4 类心跳信号分类。\n",
    "\n",
    "```python\n",
    "1. 输入数据，形状为 (batch_size, 205, 1)\n",
    "\n",
    "2. 第一组卷积\n",
    "x = Conv1D(16, kernel_size=3, activation='relu', padding='same')(input)  \n",
    "x = Conv1D(32, kernel_size=3, activation='relu', dilation_rate=2, padding='same')(x)\n",
    "x = Conv1D(64, kernel_size=3, activation='relu', dilation_rate=2, padding='same')(x)\n",
    "x = Conv1D(64, kernel_size=5, activation='relu', dilation_rate=2, padding='same')(x)\n",
    "x = MaxPooling1D(pool_size=3, strides=2, padding='same')(x)  # 下采样\n",
    "\n",
    "3. 第二组卷积\n",
    "x = Conv1D(128, kernel_size=5, activation='relu', dilation_rate=2, padding='same')(x)\n",
    "x = Conv1D(128, kernel_size=5, activation='relu', dilation_rate=2, padding='same')(x)\n",
    "x = MaxPooling1D(pool_size=3, strides=2, padding='same')(x)  # 下采样\n",
    "\n",
    "4. Dropout 防止过拟合\n",
    "x = Dropout(rate=0.5)(x)\n",
    "\n",
    "5. 全连接层\n",
    "x = Flatten()(x)  # 拉平多维数据\n",
    "x1 = Dense(256, activation='relu')(x)  # 主分支\n",
    "x2 = Dense(16, activation='relu')(x)  # 分支1\n",
    "x2 = Dense(256, activation='sigmoid')(x2)  # 分支2\n",
    "\n",
    "6. 合并分支，输出分类\n",
    "x = x1 + x2\n",
    "output = Dense(4, activation='softmax')(x)  # 输出4分类结果\n",
    "\n",
    "7. 返回输出\n",
    "return output\n",
    "\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Net2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:53.899861Z",
     "iopub.status.busy": "2024-12-29T16:59:53.899626Z",
     "iopub.status.idle": "2024-12-29T16:59:53.919438Z",
     "shell.execute_reply": "2024-12-29T16:59:53.918804Z",
     "shell.execute_reply.started": "2024-12-29T16:59:53.899841Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "class GeMPooling(tf.keras.layers.Layer):\n",
    "    def __init__(self, p=1.0, train_p=False):\n",
    "        super().__init__()\n",
    "        self.eps = 1e-6\n",
    "        self.p = tf.Variable(p, dtype=tf.float32) if train_p else p\n",
    "\n",
    "    def call(self, inputs: tf.Tensor, **kwargs):\n",
    "        inputs = tf.clip_by_value(inputs, clip_value_min=1e-6, clip_value_max=tf.reduce_max(inputs))\n",
    "        inputs = tf.pow(inputs, self.p)\n",
    "        inputs = tf.reduce_mean(inputs, axis=[1], keepdims=False)\n",
    "        inputs = tf.pow(inputs, 1./self.p)\n",
    "        return inputs\n",
    "\n",
    "\n",
    "class Net2(K.Model):\n",
    "    def __init__(self):\n",
    "        super(Net2, self).__init__()\n",
    "        self.conv1 = Conv1D(filters=16, kernel_size=3, padding='same', activation='relu', input_shape = (205, 1))\n",
    "        self.conv2 = Conv1D(filters=32, kernel_size=3, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.conv3 = Conv1D(filters=64, kernel_size=3, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.max_pool1 = MaxPool1D(pool_size=3, strides=2, padding='same')\n",
    "        \n",
    "        self.conv4 = Conv1D(filters=64, kernel_size=5, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.conv5 = Conv1D(filters=128, kernel_size=5, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.max_pool2 = MaxPool1D(pool_size=3, strides=2, padding='same')\n",
    "        \n",
    "        self.conv6 = Conv1D(filters=256, kernel_size=5, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.conv7 = Conv1D(filters=128, kernel_size=7, dilation_rate=2, padding='same', activation='relu')\n",
    "        self.gempool = GeMPooling()\n",
    "        \n",
    "        self.dropout1 = Dropout(0.5)\n",
    "        self.flatten = Flatten()\n",
    "\n",
    "        self.fc1 = Dense(units=256, activation='relu')\n",
    "        self.fc21 = Dense(units=16, activation='relu')\n",
    "        self.fc22 = Dense(units=256, activation='sigmoid')\n",
    "        self.fc3 = Dense(units=4, activation='softmax')\n",
    "\n",
    "    def call(self, x):\n",
    "        x = self.conv1(x)\n",
    "        x = self.conv2(x)\n",
    "        x = self.conv3(x)\n",
    "        x = self.max_pool1(x)\n",
    "        \n",
    "        x = self.conv4(x)\n",
    "        x = self.conv5(x)\n",
    "        x = self.max_pool2(x)\n",
    "        \n",
    "        x = self.conv6(x)\n",
    "        x = self.conv7(x)\n",
    "\n",
    "        x = self.gempool(x)\n",
    "        x = self.dropout1(x)\n",
    "        \n",
    "        x = self.flatten(x)  \n",
    "        x1 = self.fc1(x)\n",
    "        x2 = self.fc22(self.fc21(x))\n",
    "        x = self.fc3(x1 + x2)  \n",
    "        \n",
    "        return x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**核心流程总结**\n",
    "1. 输入：形状为 `(batch_size, 205, 1)`。\n",
    "2. 卷积：\n",
    "   - 提取局部和全局特征，使用膨胀卷积扩大感受野。\n",
    "3. 池化：\n",
    "   - 使用最大池化减少特征维度，降低计算复杂度。\n",
    "4. GeMPooling：\n",
    "   - 灵活调整池化方式，进一步整合全局特征。\n",
    "5. Dropout：\n",
    "   - 随机丢弃神经元，防止过拟合。\n",
    "6. 全连接：\n",
    "   - 提取高阶特征，分支特征整合后输出分类结果。\n",
    "\n",
    "---\n",
    "\n",
    "```python\n",
    "# 初始化模型\n",
    "class Net2:\n",
    "    def __init__():\n",
    "        # 定义卷积层组1\n",
    "        Conv1D(filters=16, kernel_size=3, activation='relu')\n",
    "        Conv1D(filters=32, kernel_size=3, dilation_rate=2, activation='relu')\n",
    "        Conv1D(filters=64, kernel_size=3, dilation_rate=2, activation='relu')\n",
    "        MaxPooling1D(pool_size=3, strides=2)\n",
    "\n",
    "        # 定义卷积层组2\n",
    "        Conv1D(filters=64, kernel_size=5, dilation_rate=2, activation='relu')\n",
    "        Conv1D(filters=128, kernel_size=5, dilation_rate=2, activation='relu')\n",
    "        MaxPooling1D(pool_size=3, strides=2)\n",
    "\n",
    "        # 定义卷积层组3\n",
    "        Conv1D(filters=256, kernel_size=5, dilation_rate=2, activation='relu')\n",
    "        Conv1D(filters=128, kernel_size=7, dilation_rate=2, activation='relu')\n",
    "\n",
    "        # 定义 GeMPooling 层\n",
    "        GeMPooling()\n",
    "\n",
    "        # Dropout 层\n",
    "        Dropout(rate=0.5)\n",
    "\n",
    "        # 全连接层\n",
    "        Dense(units=256, activation='relu')\n",
    "        Dense(units=16, activation='relu')  # 分支1\n",
    "        Dense(units=256, activation='sigmoid')  # 分支2\n",
    "        Dense(units=4, activation='softmax')  # 输出层\n",
    "\n",
    "    # 前向传播\n",
    "    def call(input):\n",
    "        # 卷积层组1\n",
    "        x = Conv1D(filters=16, kernel_size=3)(input)\n",
    "        x = Conv1D(filters=32, kernel_size=3, dilation_rate=2)(x)\n",
    "        x = Conv1D(filters=64, kernel_size=3, dilation_rate=2)(x)\n",
    "        x = MaxPooling1D(pool_size=3, strides=2)(x)\n",
    "\n",
    "        # 卷积层组2\n",
    "        x = Conv1D(filters=64, kernel_size=5, dilation_rate=2)(x)\n",
    "        x = Conv1D(filters=128, kernel_size=5, dilation_rate=2)(x)\n",
    "        x = MaxPooling1D(pool_size=3, strides=2)(x)\n",
    "\n",
    "        # 卷积层组3\n",
    "        x = Conv1D(filters=256, kernel_size=5, dilation_rate=2)(x)\n",
    "        x = Conv1D(filters=128, kernel_size=7, dilation_rate=2)(x)\n",
    "\n",
    "        # 使用 GeMPooling\n",
    "        x = GeMPooling()(x)\n",
    "\n",
    "        # Dropout\n",
    "        x = Dropout(rate=0.5)(x)\n",
    "\n",
    "        # 扁平化数据\n",
    "        x = Flatten()(x)\n",
    "\n",
    "        # 全连接层\n",
    "        x1 = Dense(units=256, activation='relu')(x)  # 主分支\n",
    "        x2 = Dense(units=16, activation='relu')(x)  # 分支1\n",
    "        x2 = Dense(units=256, activation='sigmoid')(x2)  # 分支2\n",
    "\n",
    "        # 合并分支并输出\n",
    "        output = Dense(units=4, activation='softmax')(x1 + x2)\n",
    "        return output\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Net3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Net3 是一个通过 膨胀卷积 和 多池化策略 增强特征提取能力的 CNN 模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T16:59:53.920463Z",
     "iopub.status.busy": "2024-12-29T16:59:53.920180Z",
     "iopub.status.idle": "2024-12-29T16:59:53.938432Z",
     "shell.execute_reply": "2024-12-29T16:59:53.937571Z",
     "shell.execute_reply.started": "2024-12-29T16:59:53.920430Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "class Net3(K.Model): \n",
    "    def __init__(self):\n",
    "        super(Net3, self).__init__()\n",
    "        self.conv1 = Conv1D(filters=16, kernel_size=3, padding='same', activation='relu',input_shape = (205, 1))\n",
    "        self.conv2 = Conv1D(filters=32, kernel_size=3, padding='same', dilation_rate=2, activation='relu')\n",
    "        self.conv3 = Conv1D(filters=64, kernel_size=3, padding='same', dilation_rate=2, activation='relu')\n",
    "        self.conv4 = Conv1D(filters=128, kernel_size=3, padding='same', dilation_rate=2, activation='relu')\n",
    "        self.conv5 = Conv1D(filters=128, kernel_size=5, padding='same', dilation_rate=2, activation='relu')\n",
    "        self.max_pool1 = MaxPool1D(pool_size=3, strides=2, padding='same')\n",
    "        self.avg_pool1 = AvgPool1D(pool_size=3, strides=2, padding='same')\n",
    "        \n",
    "        self.conv6 = Conv1D(filters=128, kernel_size=5, padding='same', dilation_rate=2, activation='relu')\n",
    "        self.conv7 = Conv1D(filters=128, kernel_size=5, padding='same', dilation_rate=2,  activation='relu')\n",
    "        self.max_pool2 = MaxPool1D(pool_size=3, strides=2, padding='same')\n",
    "        self.avg_pool2 = AvgPool1D(pool_size=3, strides=2, padding='same')\n",
    "        \n",
    "        self.dropout = Dropout(0.5)\n",
    "    \n",
    "        self.flatten = Flatten()\n",
    "        \n",
    "        self.fc1 = Dense(units=256, activation='relu')\n",
    "        self.fc21 = Dense(units=16, activation='relu')\n",
    "        self.fc22 = Dense(units=256, activation='sigmoid')\n",
    "        self.fc3 = Dense(units=4, activation='softmax')\n",
    "            \n",
    "    def call(self, x):\n",
    "        x = self.conv1(x)\n",
    "        x = self.conv2(x)\n",
    "        x = self.conv3(x)\n",
    "        x = self.conv4(x)\n",
    "        x = self.conv5(x)\n",
    "        xm1 = self.max_pool1(x)\n",
    "        xa1 = self.avg_pool1(x)\n",
    "        x = tf.concat([xm1, xa1], 2)\n",
    "        \n",
    "        x = self.conv6(x)\n",
    "        x = self.conv7(x) \n",
    "        xm2 = self.max_pool2(x)\n",
    "        xa2 = self.avg_pool2(x)\n",
    "        x = tf.concat([xm2, xa2], 2)\n",
    "        \n",
    "        x = self.dropout(x)\n",
    "        x = self.flatten(x)\n",
    "        \n",
    "        x1 = self.fc1(x)\n",
    "        x2 = self.fc22(self.fc21(x))\n",
    "        x = self.fc3(x1+x2)\n",
    "        \n",
    "        return x "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**流程总结**\n",
    "1. **输入**：形状为 `(batch_size, 205, 1)` 的时间序列信号。\n",
    "2. **卷积+膨胀卷积**：逐步提取局部和全局特征，扩大感受野。\n",
    "3. **最大池化 + 平均池化融合**：结合不同的池化策略，拼接多种特征。\n",
    "4. **Dropout**：随机丢弃神经元，防止过拟合。\n",
    "5. **全连接层**：通过主分支和分支特征相加，提升模型表现力。\n",
    "6. **输出**：使用 Softmax 输出 4 类分类概率。\n",
    "\n",
    "---\n",
    "\n",
    "```python\n",
    "# 定义 Net3 模型\n",
    "class Net3:\n",
    "    def __init__():\n",
    "        # 第一组卷积层\n",
    "        Conv1D(filters=16, kernel_size=3, activation='relu')  # 提取基础特征\n",
    "        Conv1D(filters=32, kernel_size=3, dilation_rate=2, activation='relu')  # 扩大感受野\n",
    "        Conv1D(filters=64, kernel_size=3, dilation_rate=2, activation='relu')\n",
    "        Conv1D(filters=128, kernel_size=3, dilation_rate=2, activation='relu')\n",
    "        Conv1D(filters=128, kernel_size=5, dilation_rate=2, activation='relu')\n",
    "        MaxPooling1D(pool_size=3, strides=2)  # 最大池化\n",
    "        AvgPooling1D(pool_size=3, strides=2)  # 平均池化\n",
    "\n",
    "        # 第二组卷积层\n",
    "        Conv1D(filters=128, kernel_size=5, dilation_rate=2, activation='relu')  # 提取深层特征\n",
    "        Conv1D(filters=128, kernel_size=5, dilation_rate=2, activation='relu')\n",
    "        MaxPooling1D(pool_size=3, strides=2)  # 最大池化\n",
    "        AvgPooling1D(pool_size=3, strides=2)  # 平均池化\n",
    "\n",
    "        # Dropout 防止过拟合\n",
    "        Dropout(rate=0.5)\n",
    "\n",
    "        # 全连接层\n",
    "        Dense(units=256, activation='relu')  # 主分支\n",
    "        Dense(units=16, activation='relu')  # 分支1\n",
    "        Dense(units=256, activation='sigmoid')  # 分支2\n",
    "        Dense(units=4, activation='softmax')  # 输出层\n",
    "\n",
    "    def call(input):\n",
    "        # 第一组卷积层处理\n",
    "        x = Conv1D(filters=16, kernel_size=3)(input)\n",
    "        x = Conv1D(filters=32, kernel_size=3, dilation_rate=2)(x)\n",
    "        x = Conv1D(filters=64, kernel_size=3, dilation_rate=2)(x)\n",
    "        x = Conv1D(filters=128, kernel_size=3, dilation_rate=2)(x)\n",
    "        x = Conv1D(filters=128, kernel_size=5, dilation_rate=2)(x)\n",
    "\n",
    "        # 第一组池化融合（最大池化 + 平均池化）\n",
    "        xm1 = MaxPooling1D(pool_size=3, strides=2)(x)\n",
    "        xa1 = AvgPooling1D(pool_size=3, strides=2)(x)\n",
    "        x = Concatenate(axis=2)([xm1, xa1])  # 拼接池化结果\n",
    "\n",
    "        # 第二组卷积层处理\n",
    "        x = Conv1D(filters=128, kernel_size=5, dilation_rate=2)(x)\n",
    "        x = Conv1D(filters=128, kernel_size=5, dilation_rate=2)(x)\n",
    "\n",
    "        # 第二组池化融合（最大池化 + 平均池化）\n",
    "        xm2 = MaxPooling1D(pool_size=3, strides=2)(x)\n",
    "        xa2 = AvgPooling1D(pool_size=3, strides=2)(x)\n",
    "        x = Concatenate(axis=2)([xm2, xa2])\n",
    "\n",
    "        # Dropout 防止过拟合\n",
    "        x = Dropout(rate=0.5)(x)\n",
    "\n",
    "        # 全连接层处理\n",
    "        x = Flatten()(x)  # 拉平数据\n",
    "        x1 = Dense(units=256, activation='relu')(x)  # 主分支特征\n",
    "        x2 = Dense(units=16, activation='relu')(x)  # 分支1\n",
    "        x2 = Dense(units=256, activation='sigmoid')(x2)  # 分支2\n",
    "        output = Dense(units=4, activation='softmax')(x1 + x2)  # 分支特征相加后输出分类\n",
    "\n",
    "        return output\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:32:53.313476Z",
     "iopub.status.busy": "2024-12-29T17:32:53.313163Z",
     "iopub.status.idle": "2024-12-29T17:41:35.590612Z",
     "shell.execute_reply": "2024-12-29T17:41:35.589684Z",
     "shell.execute_reply.started": "2024-12-29T17:32:53.313453Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.10/dist-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
      "  super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 11ms/step - accuracy: 0.8849 - loss: 0.2980 - val_accuracy: 0.9938 - val_loss: 0.0192\n",
      "Epoch 2/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9879 - loss: 0.0366 - val_accuracy: 0.9973 - val_loss: 0.0082\n",
      "Epoch 3/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9933 - loss: 0.0203 - val_accuracy: 0.9987 - val_loss: 0.0035\n",
      "Epoch 4/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9955 - loss: 0.0146 - val_accuracy: 0.9968 - val_loss: 0.0094\n",
      "Epoch 5/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9962 - loss: 0.0116 - val_accuracy: 0.9949 - val_loss: 0.0152\n",
      "Epoch 6/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9975 - loss: 0.0083 - val_accuracy: 0.9991 - val_loss: 0.0026\n",
      "Epoch 7/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9976 - loss: 0.0077 - val_accuracy: 0.9969 - val_loss: 0.0131\n",
      "Epoch 8/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9983 - loss: 0.0059 - val_accuracy: 0.9984 - val_loss: 0.0047\n",
      "Epoch 9/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9975 - loss: 0.0082 - val_accuracy: 0.9995 - val_loss: 0.0016\n",
      "Epoch 10/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 9ms/step - accuracy: 0.9989 - loss: 0.0038 - val_accuracy: 0.9989 - val_loss: 0.0033\n",
      "Epoch 1/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m23s\u001b[0m 13ms/step - accuracy: 0.7166 - loss: 0.6250 - val_accuracy: 0.9838 - val_loss: 0.0495\n",
      "Epoch 2/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 11ms/step - accuracy: 0.9573 - loss: 0.1256 - val_accuracy: 0.9909 - val_loss: 0.0319\n",
      "Epoch 3/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 11ms/step - accuracy: 0.9786 - loss: 0.0643 - val_accuracy: 0.9939 - val_loss: 0.0206\n",
      "Epoch 4/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.9851 - loss: 0.0453 - val_accuracy: 0.9962 - val_loss: 0.0115\n",
      "Epoch 5/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.9892 - loss: 0.0323 - val_accuracy: 0.9970 - val_loss: 0.0102\n",
      "Epoch 6/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.9917 - loss: 0.0254 - val_accuracy: 0.9986 - val_loss: 0.0046\n",
      "Epoch 7/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 11ms/step - accuracy: 0.9936 - loss: 0.0194 - val_accuracy: 0.9946 - val_loss: 0.0163\n",
      "Epoch 8/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.9939 - loss: 0.0183 - val_accuracy: 0.9942 - val_loss: 0.0162\n",
      "Epoch 9/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 11ms/step - accuracy: 0.9958 - loss: 0.0131 - val_accuracy: 0.9978 - val_loss: 0.0073\n",
      "Epoch 10/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 10ms/step - accuracy: 0.9957 - loss: 0.0139 - val_accuracy: 0.9988 - val_loss: 0.0041\n",
      "Epoch 1/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m29s\u001b[0m 18ms/step - accuracy: 0.8816 - loss: 0.2926 - val_accuracy: 0.9904 - val_loss: 0.0302\n",
      "Epoch 2/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9880 - loss: 0.0358 - val_accuracy: 0.9965 - val_loss: 0.0113\n",
      "Epoch 3/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9934 - loss: 0.0209 - val_accuracy: 0.9984 - val_loss: 0.0058\n",
      "Epoch 4/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9951 - loss: 0.0149 - val_accuracy: 0.9977 - val_loss: 0.0069\n",
      "Epoch 5/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9960 - loss: 0.0121 - val_accuracy: 0.9952 - val_loss: 0.0167\n",
      "Epoch 6/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9970 - loss: 0.0100 - val_accuracy: 0.9997 - val_loss: 8.9538e-04\n",
      "Epoch 7/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9982 - loss: 0.0067 - val_accuracy: 0.9989 - val_loss: 0.0034\n",
      "Epoch 8/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9980 - loss: 0.0067 - val_accuracy: 0.9992 - val_loss: 0.0023\n",
      "Epoch 9/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9981 - loss: 0.0060 - val_accuracy: 0.9979 - val_loss: 0.0071\n",
      "Epoch 10/10\n",
      "\u001b[1m1408/1408\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m22s\u001b[0m 16ms/step - accuracy: 0.9979 - loss: 0.0069 - val_accuracy: 0.9984 - val_loss: 0.0056\n"
     ]
    }
   ],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore', category=RuntimeWarning)\n",
    "from tensorflow.keras.callbacks import EarlyStopping\n",
    "\n",
    "# # 定义早停回调函数\n",
    "# early_stopping = EarlyStopping(\n",
    "#     monitor='val_loss',        # 监控验证集的损失\n",
    "#     patience=3,                # 容忍验证集损失在连续 3 个 epoch 内不下降\n",
    "#     restore_best_weights=True  # 恢复验证集损失最低时的模型权重\n",
    "# )\n",
    "\n",
    "def train_model(model, x_train, y_train, batch_size=128, epochs=10, validation_split=0.3):\n",
    "    \"\"\"\n",
    "    通用模型训练函数，增加早停策略\n",
    "    \"\"\"\n",
    "    # 编译模型\n",
    "    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n",
    "    \n",
    "    # 训练模型，添加早停回调函数\n",
    "    history = model.fit(\n",
    "        x_train, y_train,\n",
    "        batch_size=batch_size,\n",
    "        epochs=epochs,\n",
    "        validation_split=validation_split,\n",
    "        # callbacks=[early_stopping]  # 将早停策略传递到训练过程\n",
    "    )\n",
    "    return history\n",
    "\n",
    "# 使用封装函数训练多个模型\n",
    "model1 = Net1()\n",
    "model2 = Net2()\n",
    "model3 = Net3()\n",
    "history1 = train_model(model1, k_x_train, k_y_train)\n",
    "history2 = train_model(model2, k_x_train, k_y_train)\n",
    "history3 = train_model(model3, k_x_train, k_y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对每个模型Net1、Net2、Net3分别进行训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "训练Net1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:28:22.272962Z",
     "iopub.status.busy": "2024-12-29T17:28:22.272631Z",
     "iopub.status.idle": "2024-12-29T17:28:22.277017Z",
     "shell.execute_reply": "2024-12-29T17:28:22.276001Z",
     "shell.execute_reply.started": "2024-12-29T17:28:22.272938Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint\n",
    "\n",
    "# # 定义回调函数\n",
    "# early_stopping = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)\n",
    "# model_checkpoint = ModelCheckpoint('best_model_{model_name}.h5', save_best_only=True, monitor='val_loss')\n",
    "\n",
    "# def train_model_with_callbacks(model, x_train, y_train, batch_size=64, epochs=10, validation_split=0.2, model_name=\"model\"):\n",
    "#     \"\"\"\n",
    "#     带回调函数的通用模型训练函数\n",
    "#     \"\"\"\n",
    "#     model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n",
    "#     history = model.fit(\n",
    "#         x_train, y_train,\n",
    "#         batch_size=batch_size,\n",
    "#         epochs=epochs,\n",
    "#         validation_split=validation_split,\n",
    "#         callbacks=[early_stopping, model_checkpoint]\n",
    "#     )\n",
    "#     return history\n",
    "\n",
    "# # 调用函数训练并保存最优模型\n",
    "# history1 = train_model_with_callbacks(Net1(), k_x_train, k_y_train, model_name=\"Net1\")\n",
    "# history2 = train_model_with_callbacks(Net2(), k_x_train, k_y_train, model_name=\"Net2\")\n",
    "# history3 = train_model_with_callbacks(Net3(), k_x_train, k_y_train, model_name=\"Net3\")\n",
    "\n",
    "\n",
    "# # import warnings\n",
    "# # warnings.filterwarnings('ignore', category=RuntimeWarning)\n",
    "\n",
    "# # model1 = Net1()\n",
    "# # model1.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n",
    "\n",
    "# # history1 = model1.fit(\n",
    "# #     k_x_train, k_y_train,\n",
    "# #     batch_size=64, epochs=10,\n",
    "# #     validation_split=0.2\n",
    "# # )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "训练Net2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:04:39.005628Z",
     "iopub.status.busy": "2024-12-29T17:04:39.005155Z",
     "iopub.status.idle": "2024-12-29T17:04:39.020536Z",
     "shell.execute_reply": "2024-12-29T17:04:39.019879Z",
     "shell.execute_reply.started": "2024-12-29T17:04:39.005569Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# import warnings\n",
    "# warnings.filterwarnings('ignore', category=RuntimeWarning)\n",
    "\n",
    "# model2 = Net2()\n",
    "# model2.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n",
    "\n",
    "# history2 = model2.fit(\n",
    "#     k_x_train, k_y_train,\n",
    "#     batch_size=64, epochs=10,\n",
    "#     validation_split=0.2\n",
    "# )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "训练Net3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:04:39.021680Z",
     "iopub.status.busy": "2024-12-29T17:04:39.021405Z",
     "iopub.status.idle": "2024-12-29T17:04:39.034314Z",
     "shell.execute_reply": "2024-12-29T17:04:39.033507Z",
     "shell.execute_reply.started": "2024-12-29T17:04:39.021649Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# import warnings\n",
    "# warnings.filterwarnings('ignore', category=RuntimeWarning)\n",
    "\n",
    "# model3 = Net3()\n",
    "# model3.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n",
    "\n",
    "# history3 = model3.fit(\n",
    "#     k_x_train, k_y_train,\n",
    "#     batch_size=64, epochs=10,\n",
    "#     validation_split=0.2\n",
    "# )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可视化训练过程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:42:26.926011Z",
     "iopub.status.busy": "2024-12-29T17:42:26.925701Z",
     "iopub.status.idle": "2024-12-29T17:42:27.891536Z",
     "shell.execute_reply": "2024-12-29T17:42:27.890640Z",
     "shell.execute_reply.started": "2024-12-29T17:42:26.925987Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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jnvvvZe2bdval2MKCAhgx44dfP3119x222389NNP3HLLLQwfPrxUYhSRyk3X5/PT9bl0Ofr6XNDrf91119GwYUP7tm7dOjZs2HBRIy0u1bmu9WffgDhbcd/RwoULGTFiBOHh4XzwwQf2/x9vuummi/p7/G8REREEBgaycOFC+/GDgoLo1q3bJR9LLp165KXCmTRpEgsXLrQX5DpbeHg4hmFQv359rrrqqvMe51KHKxVUpr2YO+8lsXPnTv766y8WLFjAsGHD7PvL01DnkJCQQneeCxS370qqVasWDz30EA899BCJiYm0adOGl156yb5+67n+bENCQvjjjz+wWq2Ffqjt3bvX/vrFaNasGa1bt+aTTz6hTp06xMbGXtQayp988kmhCscX00txPiEhIVitVv7++297rwVAQkICp06dKnI+11xzDddccw0vvfQSixYtYsiQIXz22Wfcd999ALi4uNCnTx/69OmD1WrloYce4p133uHZZ58tlSJSIlK56frsOLo+25TF9fngwYOsX7+eyMhIunTpUug1q9XK0KFDWbRoEZMmTbJPp9i1a9c5r6NntzlfAly9evVibxD8e7TC+Xz55ZeEhYWxZMmSQn8W/x5CHx4ezsqVKzlx4sR5e+UtFgt333038+fP59VXX2XZsmWMHj26Qi2jWJGpR14qnPDwcO655x7eeecd4uPjC712xx13YLFYeO6554rcqTYMg+PHj9ufe3p6FnvRP3bsWLF3ud9//30A2rVrVxqnUUTBP3pnf7ZhGOVq+a+IiAg2bNjAjh077PtOnDhRaD7alZSXl1fkzywgIIDg4OBCy62d68+2V69exMfHs3jxYvu+3NxcZs+ejZeXV5EL8vkMHTqU77//nqioKGrWrGn/kXI+1113Hd26dbNvl5vI9+rVC4CoqKhC+2fOnAlA7969ATh58mSRv9MF8ygLvrez/98A2xDFFi1aFGojInI+uj47jq7PZ1zp63PBd/rkk08yYMCAQtudd95Jly5d7G169OiBt7c306ZNIzMzs9BxCv4+tWnThvr16xMVFVVkCcWz/86Fh4ezd+9ekpKS7Pt+//13fv311wueX4Hi/i5v3LiRDRs2FGrXv39/DMPgueeeK3KMf/8/OHToUE6ePMl//vMfUlNTy7xeUFWmHnmpkJ555hk+/vhj9u3bZ196BWz/yL344otMnDiRf/75h759++Lt7c3BgwdZunQp999/P48//jgAbdu2ZfHixYwfP5727dvj5eVFnz59WLhwIXPnzqVv376EhYVx+vRpVq5cyapVq+jTpw833XTTFTmnRo0aER4ezuOPP05cXBw+Pj589dVXFzV/rqw8+eSTLFy4kO7duzN27Fj78jb16tXjxIkTl1WU5WKcPn2aOnXqMGDAAFq2bImXlxc//PADmzdvZsaMGfZ25/qzvf/++3nnnXcYMWIEW7duJTQ0lC+//JJff/2VqKgovL29LzqWu+++myeffJKlS5fy4IMPXtL8zkuxf/9+XnzxxSL7W7duTe/evRk+fDjvvvsup06dokuXLmzatIkFCxbQt29fbrzxRsA2H+6///0v/fr1Izw8nNOnT/Pee+/h4+Njvxlw3333ceLECW666Sbq1KlDTEwMs2fPplWrVoV6+0VEzkfXZ8fQ9fmMK319/uSTT2jVqhV169Yt9vXbbruNsWPHsm3bNtq0acMbb7zBfffdR/v27bn77rupXr06v//+O+np6SxYsACz2czbb79Nnz59aNWqFSNHjqRWrVrs3buXP//8k5UrVwJw7733MnPmTCIiIhg1ahSJiYnMnTuXpk2bkpKSclGx33rrrSxZsoR+/frRu3dvDh48yNy5c2nSpIl9qh3YCkoOHTqUN998k7///puePXtitVpZu3YtN954I5GRkfa2rVu3plmzZnzxxRc0btyYNm3aXMa3K5ekTGrji5TQ2cvb/FvBMjFnL29T4KuvvjKuv/56w9PT0/D09DQaNWpkjBkzxti3b5+9TWpqqnH33Xcb1apVMwD70h2bN282Bg4caNSrV89wdXU1PD09jTZt2hgzZ840cnJyLin+cy1v4+npWWz73bt3G926dTO8vLwMPz8/Y/To0fYlaubNm2dvd67lbYpb9iUkJMQYPny4/fm5lrcpbpmz4pY62b59u3HDDTcYrq6uRp06dYxp06YZb775pgEY8fHx5/4yzoo7KSmp2NeLi4OzlrfJysoynnjiCaNly5aGt7e34enpabRs2dL473//W+g95/qzNQzDSEhIMEaOHGn4+fkZLi4uRvPmzQt9t4ZxZumW119//bzn06tXLwMw1q9ff952JVWw7FBx26hRowzDMIycnBzjueeeM+rXr284OzsbdevWNSZOnGhkZmbaj7Nt2zZj8ODB9r/TAQEBxq233mps2bLF3ubLL780evToYQQEBBguLi5GvXr1jP/85z/G0aNHr8i5iUjFpuuzrs9V8fq8detWAzCeffbZc7b5559/DMB49NFH7fu+/vpr49prrzXc3d0NHx8fo0OHDsann35a6H3r1q0zunfvbv/+WrRoUWh5QsMwjIULFxphYWGGi4uL0apVK2PlypXnXH6uuO/IarUaL7/8shESEmK4uroarVu3Nr755psixzAM21J1r7/+utGoUSPDxcXF8Pf3N2655RZj69atRY772muvGYDx8ssvn+/rk1JmMoxyVilDRCqccePG8c4775Camlql5kX169ePnTt3lvkcRBERkYuh67Ouz2Vh1qxZPProo/zzzz/FrrIgV4bmyIvIJTm7GAzY5lZ//PHHXH/99VXqR8LRo0dZvny5llgREZFyQddnG12fy5ZhGHzwwQd06dJFSXwZ0xx5EbkknTp1omvXrjRu3JiEhAQ++OADUlJSePbZZx0dWpk4ePAgv/76K++//z7Ozs785z//cXRIIiIiuj7r+lym0tLS+Prrr/npp5/YuXNnqSz/KJdGibyIXJJevXrx5Zdf8u6772IymWjTpg0ffPABnTt3dnRoZeLnn39m5MiR1KtXjwULFhAUFOTokERERHR91vW5TCUlJXH33XdTrVo1nn76aW677TZHh1TlaI68iIiIiIiISAWiOfIiIiIiIiIiFYgSeREREREREZEKRHPki2G1Wjly5Aje3t6YTCZHhyMiIoJhGJw+fZrg4GDMZt2Hv1y61ouISHlzKdd6JfLFOHLkCHXr1nV0GCIiIkUcOnSIOnXqODqMCk/XehERKa8u5lqvRL4Y3t7egO0L9PHxcXA0IiIikJKSQt26de3XKLk8utaLiEh5cynXeiXyxSgYYufj46OLu4iIlCsaBl46dK0XEZHy6mKu9ZpkJyIiIiIiIlKBKJEXERERERERqUCUyIuIiIiIiIhUIA6fI//WW2/x+uuvEx8fT8uWLZk9ezYdOnQotu2ff/7J5MmT2bp1KzExMbzxxhuMGzfunMd+5ZVXmDhxIo888ghRUVFX5gREpEoxDIPc3Fzy8vIcHYpUMhaLBScnJ82BFxERkQtyaCK/ePFixo8fz9y5c+nYsSNRUVFERESwb98+AgICirRPT08nLCyMgQMH8uijj5732Js3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hWsJOhERqSDGjx/P8OHDadeuHR06dCAqKoq0tDRGjhwJwLBhw6hduzbTpk0DYOPGjcTFxdGqVSvi4uKYOnUqVquVJ5980n7MPn368NJLL1GvXj2aNm3K9u3bmTlzJvfee69DztGRCurlhPmpN15EpKpQIl9BFcyRP3gsjdw8K04WDa4QEZHyadCgQSQlJTF58mTi4+Np1aoVK1assBfAi42NLdS7npmZyaRJk4iOjsbLy4tevXrx8ccfU61aNXub2bNn8+yzz/LQQw+RmJhIcHAw//nPf5g8eXJZn57DRedPs9P8eBGRqsPh2d9bb71FaGgobm5udOzY8YLrv37xxRc0atQINzc3mjdvzrffflvo9dTUVCIjI6lTpw7u7u729Worm9rV3HFzNpOdZ+XQyQxHhyMiInJekZGRxMTEkJWVxcaNG+nYsaP9tTVr1jB//nz78y5durB7924yMzM5duwYH330EcHBwYWO5+3tTVRUFDExMWRkZHDgwAFefPFFXFxcyuqUyg31yIuIVD0OTeQXL17M+PHjmTJlCtu2baNly5ZERESQmJhYbPv169czePBgRo0axfbt2+nbty99+/Zl165d9jbjx49nxYoVLFy4kD179jBu3DgiIyP5+uuvy+q0yoTZbLIvMaPh9SIiIlWXeuRFRKoehybyM2fOZPTo0YwcOdLec+7h4cGHH35YbPtZs2bRs2dPnnjiCRo3bswLL7xAmzZtmDNnjr3N+vXrGT58OF27diU0NJT777+fli1bXrCnvyKyF7zTWvIiIiJVUp7VIDq/2F241pAXEakyHJbIZ2dns3XrVrp163YmGLOZbt26sWHDhmLfs2HDhkLtASIiIgq1v/baa/n666+Ji4vDMAx++ukn/vrrL3r06HHOWLKyskhJSSm0VQQNVPBORESkSjtyKoPsXCsuTmZqV3d3dDgiIlJGHJbIHzt2jLy8PHuhmwKBgYHEx8cX+574+PgLtp89ezZNmjShTp06uLi40LNnT9566y06d+58zlimTZuGr6+vfatbt+5lnFnZUSIvIiJXQmhoKM8//zyxsbGODkUuYH/+qLz6NT2xmE0OjkZERMqKw4vdlbbZs2fz22+/8fXXX7N161ZmzJjBmDFj+OGHH875nokTJ5KcnGzfDh06VIYRl1y4/5m15A3DcHA0IiJSWYwbN44lS5YQFhZG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3mP//v3MmTOH//u//+Ohhx4q8/MrD+yV6zW0XkRELqBPnz5cffXV/PHHH0RFRXHkyBFmz5592ce91OVmJ02axDvvvMPs2bPZvXs3DzzwAP369WP79u32Nps3b+bo0aP2bdWqVQAMHDjwsuMtT6KPqUdeRESKcmgiP2jQIKZPn87kyZNp1aoVO3bsYMWKFfaCdrGxsRw9etTe/tprr2XRokW8++67tGzZki+//JJly5bRrFkze5t+/foxd+5cXnvtNZo3b87777/PV199xfXXX1/m51ceaAk6ERG5WN999x2jRo3iueeeo3fv3lgsllI57qUuN/vxxx/z9NNP06tXL8LCwnjwwQfp1asXM2bMsLfx9/cnKCjIvn3zzTeEh4fTpUuXUom5PDiZls2J/GK1WkNeRETO5rDl5wpERkYW6lE/25o1a4rsGzhw4AXvtt97773ce++9pRFehReef+GPO5VBRnYe7i6l86NMREQqn3Xr1vHBBx/Qtm1bGjduzNChQ7nrrrsu65glWW42KysLN7fCS625u7uzbt26c37GwoULGT9+PCZT8ZXdK+JSs9HHbDfhg33d8HBx+E82EREpRypV1XopqqaXK9U9nDGMM/PsREREinPNNdfw3nvvcfToUf7zn//w2WefERwcjNVqZdWqVZw+ffqSj1mS5WYjIiKYOXMmf//9t/2zlyxZUmiU3tmWLVvGqVOnGDFixDnjqIhLzR7IL3Sn+fEiIvJvSuSrgILh9UrkRUTkYnh6enLvvfeybt06du7cyWOPPcYrr7xCQEAAt9122xX//FmzZtGwYUMaNWqEi4sLkZGRjBw5ErO5+J8tH3zwAbfccgvBwcHnPGZFXGrWvvSc5seLiMi/KJGvAhpoCToRESmhq6++mtdee43Dhw/z6aefXvL7S7LcrL+/P8uWLSMtLY2YmBj27t2Ll5cXYWFhRdrGxMTwww8/cN999503joq41Gy0euRFROQclMhXAeH+qlwvIiKXx2Kx0LdvX77++utLel9Jlpst4ObmRu3atcnNzeWrr77i9ttvL9Jm3rx5BAQE0Lt370uKqyI40yOvRF5ERApT5ZQqQJXrRUTEkcaPH8/w4cNp164dHTp0ICoqqshys7Vr12batGkAbNy4kbi4OFq1akVcXBxTp07FarXy5JNPFjqu1Wpl3rx5DB8+HCenyvWTJifPSuzxdADCAzS0XkRECqtcVz0pVkGP/MFjaeTmWXGyaCCGiIiUnUGDBpGUlMTkyZOJj4+nVatWRZabPXv+e2ZmJpMmTSI6OhovLy969erFxx9/TLVq1Qod94cffiA2NrZSrlQTeyKdXKuBh4uFIB+3C79BRESqFCXyVUDtau64O1vIyMkj9kQ6Yf4aoiciImXrUpab7dKlC7t3777gMXv06IFhGKURXrlTMD8+zN/znEvqiYhI1aWu2SrAbDYRlr+efMFSNiIiIlJ+aX68iIicjxL5KkLz5EVERCqO6PxEPlyj6EREpBhK5KuIBv5K5EVERCqKA2cNrRcREfk3JfJVRMEatFqCTkREpPxTj7yIiJyPEvkqomBo/YHE1EpbGEhERKQyOJGWzcn0HADq+6lHXkREilIiX0WE1vTEYjaRmpVL4uksR4cjIiIi51DQG1+7mjvuLhYHRyMiIuWREvkqwsXJTEgND0Dz5EVERMoze8V6zY8XEZFzUCJfhYSrcr2IiEi5V7CGvObHi4jIuSiRr0K0BJ2IiEj5d8Be6E498iIiUjwl8lVIuJagExERKfei7UvPqUdeRESKp0S+CmmgJehERETKtZw8K7En0gENrRcRkXNTIl+FFAzRSzqdRXJGjoOjERERkX+LOZ5OrtXA08VCoI+ro8MREZFySol8FeLt5kyQjxtwZv6diIiIlB/R9or1XphMJgdHIyIi5ZUS+SpGBe9ERETKrwP2+fEqdCciIuemRL6KKUjkDyiRFxERKXei7RXrNT9eRETOTYl8FVMwT1498iIiIuXPAfvQevXIi4jIuSmRr2LCVbleRESkXDIMwz60Xj3yIiJyPkrkq5iCofWHTqSTmZPn4GhERESkwIm0bJIzcjCZoL6feuRFROTclMhXMf5ervi4OWE14J/jaY4OR0RERPJFH7Ndl2tXc8fN2eLgaEREpDxTIl/FmEwmVa4XEREphwoK0YZpWL2IiFyAEvkqqGDenRJ5ERGR8qOgRz5Mw+pFROQClMhXQeqRFxERKX8KeuQLCtOKiIicixL5Ksi+lnyS5siLiIiUFwU98uHqkRcRkQtQIl8FFSTy0Ump5FkNB0cjIiIi2blWYk+kA+qRFxGRC1MiXwXVqe6Bi5OZrFwrcSczHB2OiIhIlRd7Io08q4Gni4UAb1dHhyMiIuWcEvkqyGI22Qvp7E867eBoREREZH9i/rD6AC9MJpODoxERkfJOiXwVFa6CdyIiIuVG9LH8pec0P15ERC6CEvkqqoGWoBMRESk3ovML0IZrDXkREbkISuSrKFWuFxERKT8OJOX3yCuRFxGRi6BEvoo6ey15w1DlehEREUcxDONMj3yAhtaLiMiFKZGvour7eWI2QXJGDsdSsx0djoiISJV1PC2b5IwcTCYIralEXkRELkyJfBXl5myhbg0PQPPkRUREHKmgN75OdXfcnC0OjkZERCoCJfJVWEFBnf1JSuRFREQcxT4/3k/z40VE5OKUi0T+rbfeIjQ0FDc3Nzp27MimTZvO2/6LL76gUaNGuLm50bx5c7799ttztn3ggQcwmUxERUWVctQVn73gnXrkRUREHCY6P5FXxXoREblYDk/kFy9ezPjx45kyZQrbtm2jZcuWREREkJiYWGz79evXM3jwYEaNGsX27dvp27cvffv2ZdeuXUXaLl26lN9++43g4OArfRoVUsESdAfUIy8iIuIwBSvIhPlrfryIiFwchyfyM2fOZPTo0YwcOZImTZowd+5cPDw8+PDDD4ttP2vWLHr27MkTTzxB48aNeeGFF2jTpg1z5swp1C4uLo6xY8fyySef4OzsXBanUuGEB2gteREREUdTj7yIiFwqhyby2dnZbN26lW7dutn3mc1munXrxoYNG4p9z4YNGwq1B4iIiCjU3mq1MnToUJ544gmaNm16wTiysrJISUkptFUFBT3yR5MzSc3KdXA0IiIiVU9Wbh6xJ9IBCFePvIiIXCSHJvLHjh0jLy+PwMDAQvsDAwOJj48v9j3x8fEXbP/qq6/i5OTEww8/fFFxTJs2DV9fX/tWt27dSzyTisnXwxk/L1dA8+RFREQcIfZ4OlYDvFyd8Pd2dXQ4IiJSQTh8aH1p27p1K7NmzWL+/PmYTKaLes/EiRNJTk62b4cOHbrCUZYfDQJsd/81vF5ERKTsHbAPq/e86N8tIiIiDk3k/fz8sFgsJCQkFNqfkJBAUFBQse8JCgo6b/u1a9eSmJhIvXr1cHJywsnJiZiYGB577DFCQ0OLPaarqys+Pj6FtqrCXrleBe9ERETK3JlCd5ofLyIiF8+hibyLiwtt27Zl9erV9n1Wq5XVq1fTqVOnYt/TqVOnQu0BVq1aZW8/dOhQ/vjjD3bs2GHfgoODeeKJJ1i5cuWVO5kKqmCevHrkRUREyt7ZPfIiIiIXy8nRAYwfP57hw4fTrl07OnToQFRUFGlpaYwcORKAYcOGUbt2baZNmwbAI488QpcuXZgxYwa9e/fms88+Y8uWLbz77rsA1KxZk5o1axb6DGdnZ4KCgrj66qvL9uQqgAYB3gDsV4+8iIhImYtWj7yIiJSAwxP5QYMGkZSUxOTJk4mPj6dVq1asWLHCXtAuNjYWs/nMwIFrr72WRYsWMWnSJJ5++mkaNmzIsmXLaNasmaNOoUIrGFofczyd7FwrLk6VrmyCiIhIuWQYxlk98krkRUTk4jk8kQeIjIwkMjKy2NfWrFlTZN/AgQMZOHDgRR//n3/+KWFklV+gjyterk6kZuUSczyNhoHejg5JRESkSjiWms3pzFxMJgip6eHocEREpAJR92sVZzKZ7PPyNE9eRESk7ETn98bXre6Bm7PFwdGIiEhFokReCFflehERkTJ3pmK9Ct2JiMilUSIv9nny6pEXEREpO9GaHy8iIiWkRF7OLEGnHnkREZEyUzASTj3yIiJyqZTIi71H/kBiGlar4eBoREREqoboY7ah9eqRFxGRS6VEXqhXwwNni4mMnDyOJGc4OhwREZFKLys3j0Mn0gH1yIuIyKVTIi84WcyE1lTlehERkbISczwdqwHebk74e7k6OhwREalglMgLcNbw+vwKuiIiInLlHEgsmB/vhclkcnA0IiJS0SiRF0CV60VERMqSfX68n4bVi4jIpVMiL8DZBe+UyIuIiFxpBdfb8AAVuhMRkUunRF6AMxVz/zySzNaYEw6ORkREpHI7kN8jH6YeeRERKQEl8gLAVYHeNAzwIi07j4FzN/DKd3vJys1zdFgiIiKVjmEYRKtHXkRELoMSeQHAxcnMlw9eyx1tamM1YO7PB7ht9q/8eSTZ0aGJiIhUKkmpWZzOysVsgpCaHo4OR0REKiAl8mLn6+7MzDtb8c7QttT0dGFfwmlun/Mrs1f/TW6e1dHhiYiIVAoHEm3D6uvW8MDVyeLgaEREpCJSIi9FRDQNYuWjnYloGkiu1WDGqr/o//Z6VbQXEZESe+uttwgNDcXNzY2OHTuyadOmc7bNycnh+eefJzw8HDc3N1q2bMmKFSuKtIuLi+Oee+6hZs2auLu707x5c7Zs2XIlT6NURB/LX3pO8+NFRKSElMhLsfy8XJl7T1veGNQSbzcnfj+cTO831/LBuoNYrYajwxMRkQpk8eLFjB8/nilTprBt2zZatmxJREQEiYmJxbafNGkS77zzDrNnz2b37t088MAD9OvXj+3bt9vbnDx5kuuuuw5nZ2e+++47du/ezYwZM6hevXpZnVaJFfTIFxSaFRERuVQmwzCUlf1LSkoKvr6+JCcn4+Pjc3kHy82Go79D3falE5wDHE3O4KmvdvLLX0kAdKxfg+kDW1K3hub1iYiUlVK9NpWxjh070r59e+bMmQOA1Wqlbt26jB07lgkTJhRpHxwczDPPPMOYMWPs+/r374+7uzsLFy4EYMKECfz666+sXbu2RDE58vscMW8Ta/Yl8XK/5tzdsV6ZfraIiJRfl3JtUo/8lZSdBosGwvzeELPB0dGUWC1fdxaMbM+LfZvh4WJh48ET9Iz6hc82xaL7QCIicj7Z2dls3bqVbt262feZzWa6devGhg3FXxuzsrJwc3MrtM/d3Z1169bZn3/99de0a9eOgQMHEhAQQOvWrXnvvffOGUdWVhYpKSmFNkeJTirokdfQehERKRkl8leSkxs4e0JeFnx6FyT95eiISsxkMnHPNSF898gNtA+tTlp2HhOW7OTe+ZtJSMl0dHgiIlJOHTt2jLy8PAIDAwvtDwwMJD4+vtj3REREMHPmTP7++2+sViurVq1iyZIlHD161N4mOjqat99+m4YNG7Jy5UoefPBBHn74YRYsWFDsMadNm4avr699q1u3bumd5CXIzMnj0Ml0AMI0tF5EREpIifyVZLZA//ehdjvIPAWf9IfTCY6O6rKE1PTks/s78Uyvxrg4mflpXxI93viFr38/4ujQRESkkpg1axYNGzakUaNGuLi4EBkZyciRIzGbz/xssVqttGnThpdffpnWrVtz//33M3r0aObOnVvsMSdOnEhycrJ9O3ToUFmdTiExx9MxDPBxc8LPy8UhMYiISMWnRP5Kc/GAuxdDjTA4FQuL7oSsil393WI2MbpzGN+MvZ5mtX1Izsjh4U+3M2bRNk6kZTs6PBERKUf8/PywWCwkJBS+kZ2QkEBQUFCx7/H392fZsmWkpaURExPD3r178fLyIiwszN6mVq1aNGnSpND7GjduTGxsbLHHdHV1xcfHp9DmCAeS8ivW+3thMpkcEoOIiFR8SuTLgqcfDPkSPGrC0R3w5UjIy3V0VJftqkBvlj50HY/c3BCL2cTyP47S441f+GF3xR51ICIipcfFxYW2bduyevVq+z6r1crq1avp1KnTed/r5uZG7dq1yc3N5auvvuL222+3v3bdddexb9++Qu3/+usvQkJCSvcESll0fiKvivUiInI5lMiXlZrhMHgxOLnD39/D8vFQCQrFOVvMPNr9KpY9dB0NA7w4lprFfR9t4Ykvfud0Zo6jwxMRkXJg/PjxvPfeeyxYsIA9e/bw4IMPkpaWxsiRIwEYNmwYEydOtLffuHEjS5YsITo6mrVr19KzZ0+sVitPPvmkvc2jjz7Kb7/9xssvv8z+/ftZtGgR7777bqFK9+XRgfxCd2EqdCciIpdBiXxZqtveNmceE2xbAGunOzqiUtO8ji//N/Z67u8chskEX2w9TM+otazff8zRoYmIiIMNGjSI6dOnM3nyZFq1asWOHTtYsWKFvQBebGxsoUJ2mZmZTJo0iSZNmtCvXz9q167NunXrqFatmr1N+/btWbp0KZ9++inNmjXjhRdeICoqiiFDhpT16V0S9ciLiEhp0Dryxbjia8tueg++fdz2uN870PKu0v8MB9p08ASPf/E7sSdsVXlHXBvKUz0b4e5icXBkIiIVV0VeR748csT3aRgGzad+T2pWLqse7UzDQO8y+VwREakYtI58eddhNFz7sO3x/8ZA9BqHhlPaOtSvwXeP3MCQjvUAmL/+H3q9uZZtsScdHJmIiIjjJJ3OIjUrF7MJ6tX0cHQ4IiJSgSmRd5Ruz0Gz/mDNhcVDIX6XoyMqVZ6uTrzUrzkL7u1AkI8bB4+lMeDt9by2Yi9ZuXmODk9ERKTM7c8fVl+vhgeuThqlJiIiJadE3lHMZuj7NoRcB1kp8MlASI5zdFSlrstV/qwc15l+rWtjNeC/aw5w+5xf2X0kxdGhiYiIlKloe6E7zY8XEZHLo0TekZxc4a5PwO9qOH0EPhkAmcmOjqrU+Xo488agVsy9pw01PF3YG3+a299ax1s/7Sc3z+ro8ERERMrEAXuhO1WsFxGRy6NE3tHcq8M9X4JXICTutg2zz812dFRXRM9mtVg5rjPdmwSSk2fw+sp9DJi7wf7DRkREpDJTj7yIiJQWJfLlQbV6MOQLcPGCgz/D12MrxRrzxfH3duXdoW2ZMbAl3m5O7Dh0it5vrmXerwexWivnOYuIiMDZPfJK5EVE5PIokS8varWEOxeAyQJ/fAY/vujoiK4Yk8lE/7Z1WDmuMzc09CMzx8pz/7ebIe9v5PDJdEeHJyIiUuoyc/KIO5UBQJiG1ouIyGVSIl+eNOgGfWbZHq+dDlvmOTaeKyy4mjsf3duBF25viruzhQ3Rx+kZtZbFm2MxKumIBBERqZoOHkvDMMDX3Zmani6ODkdERCo4JfLlTZuh0OUp2+Pl4+GvlY6N5wozmUwM7RTKd4/cQNuQ6qRm5fLUVzu5b8EWElMyHR2eiIhIqTgzP94Tk8nk4GhERKSiUyJfHnWdCK2GgGGFL0ZA3DZHR3TFhfp58vl/OjHxlka4WMys3ptIj6hf+OaPI44OTURE5LJpfryIiJQmJfLlkclkG2IfdiPkpMOiO+HkP46O6oqzmE38p0s4/zf2epoG+3AqPYfIRdsZ++l2TqZVzkr+IiJSNUTnJ/KaHy8iIqVBiXx5ZXGGOz+CwOaQlgQLB0D6CUdHVSauDvJm6UPX8fBNDbCYTfzf70foEfULP+5NcHRoIiIiJRJ9zDa0Xj3yIiJSGpTIl2duPrZl6XzqwPG/4dPBkFM15o27OJkZ3+Nqljx4LeH+niSdzuLe+Vt46ss/OJ2Z4+jwRERELpphGBxILBharx55ERG5fErkyzufWnDPl+DqC4d+g6X3g9Xq6KjKTMu61Vj+8A3cd319TCZYvOUQPaPWsv7AMUeHJiIiclEST2eRlp2HxWyiXg0l8iIicvmUyFcEAY3hroVgdobd/4PvJzk6ojLl5mxh0q1N+HT0NdSp7k7cqQzufm8j93+0hZV/xpOdW3VubIiISMVT0Btfr4YHLk766SUiIpevXFxN3nrrLUJDQ3Fzc6Njx45s2rTpvO2/+OILGjVqhJubG82bN+fbb7+1v5aTk8NTTz1F8+bN8fT0JDg4mGHDhnHkSAWvfl6/M/R92/b4t7fgt7cdG48DXBNWkxXjOjO4Qz0Avt+dwH8+3krHl39gyv928cfhU1p/XkREyp0D+fPjw/zUGy8iIqXD4Yn84sWLGT9+PFOmTGHbtm20bNmSiIgIEhMTi22/fv16Bg8ezKhRo9i+fTt9+/alb9++7Nq1C4D09HS2bdvGs88+y7Zt21iyZAn79u3jtttuK8vTujJaDIRuU22PV0y09c5XMV6uTky7ozkrx3Xm/s5h+Hu7cjI9hwUbYrhtzq/0eOMX3l5zgKPJGY4OVUREBDjTIx8eoEJ3IiJSOkyGg7swO3bsSPv27ZkzZw4AVquVunXrMnbsWCZMmFCk/aBBg0hLS+Obb76x77vmmmto1aoVc+fOLfYzNm/eTIcOHYiJiaFevXoXjCklJQVfX1+Sk5Px8fEp4ZldIYYByx+DLR+AkxsM+x/Uu8bRUTlMbp6VdfuPsWRbHCv/jCcrf5i9yQTXN/Djjja1iWgahIeLk4MjFRG5POX62lQBleX3+f/t3Xl8TPf6wPHPzGSP7IsIIUKstRNFbT801qJRS6m1vVcvLk21RVUtRWtrqlq9em2t3S2qC0oobVBKqda+E7KSRPZk5vz+ODGMJCRMTJbn/XqdlzlnzpzzzGmab57vOnjZIfadjeXDF+vRP+jRf4cIIYQomwpTNlk0u8nMzOTIkSNMnDjReEyr1dKxY0cOHDiQ52cOHDhAaGioybHg4GC2bNmS730SExPRaDS4urrm+X5GRgYZGRnG/aSkpIJ/iadNo4EucyDpBpzdBmv7w4id4Blo6cgswkqnpV1Nb9rV9CYpPYsf/7zJpqORHLp8i1/OxfHLuTgcbf6iS70KhDSuRPOq7mi1GkuHLYQQogyRFnkhhBDmZtGu9XFxcej1esqXL29yvHz58kRFReX5maioqEKdn56ezjvvvMOAAQPyrdWYPXs2Li4uxs3Pz+8xvs1TpLOCPkvBtzGk3YZVIZCc91CEssTZzpr+QZXZMLIF+95qz7iOgVR2dyAlU8//jlxnwJcHaT1nD/N/OsOlnPGKQgghRFFKy9RzI2e4l4yRF0IIYS4WHyNflLKysujbty+KorB4cf6Tw02cOJHExETjdu3atacY5WOycYSXN4CbPyRcgTV9IVOS07sqezgwrmMN9r7Vjo0jW9C/mR9OtlZEJqTx6e7ztJ/3My9+HsHq366QmCrr0gshhCgal+JSUBRwdbDG3dHG0uEIIYQoJSzatd7T0xOdTkd0dLTJ8ejoaHx8fPL8jI+PT4HOv5vEX7lyhd27dz90jIGtrS22traP+S0sqJwXDPwGlnaCG3/A/4ZDv9Vqi70AQKPR0MzfnWb+7kx9oS4/nYxm09Hr7Dsby9GrCRy9msC0707SqXZ5XmxckTY1vLDWler6LSGEEE/RxTi1W32ApyMajQztEkIIYR4WzVhsbGxo0qQJ4eHhxmMGg4Hw8HBatGiR52datGhhcj7Azp07Tc6/m8SfO3eOXbt24eHhUTRfoDjwrA4vr1cnvju7HX4cr06IJ3Kxs9bxQgNfVgwL4uDEDrzbtTa1fJzIzDbww4mbjFj5Oy1mhzP9u5P8fSNRlrITQgjxxC7EqL3lqnnJ+HghhBDmY/Gm29DQUIYMGULTpk0JCgoiLCyMlJQUhg0bBsDgwYOpWLEis2fPBmDs2LG0bduW+fPn061bN9atW8fvv//OkiVLADWJ79OnD0ePHuX7779Hr9cbx8+7u7tjY1MKu7X5BUHIf2H9K3BkObj6Qes3LR1VsebtbMdrbQJ4tXVVTt5MYtPRSL49FklccibLIi6xLOIStXycCGlciZ4NffF2trN0yEIIIUogY4u8JPJCCCHMyOKJfL9+/YiNjWXKlClERUXRsGFDtm/fbpzQ7urVq2i19zoOtGzZkjVr1jB58mQmTZpEYGAgW7Zs4ZlnngEgMjKSrVu3AtCwYUOTe+3Zs4d27do9le/11NXuAZ0/hO3vQPh0cPGD+n0tHVWxp9FoqOvrQl1fFyZ0qcW+s7FsOhrJzpPRnI66w8wfTzF72ylaB3oR0qQSz9cpj521ztJhCyGEKCEuxObMWO8lE90JIYQwH4uvI18clei1ene8CwcWgdYaBn0DAW0tHVGJlJiaxfcnbrDpaCRHrtw2HneytaJb/QqENKlE0ypuMt5RCPHUlOiyqRh6Gs9TURTqvr+D1Ew9u0LbUl2WnxNCCPEQJWYdeVEEOs2AxOtwcgusHwTDd0D5OpaOqsRxcbBmYPMqDGxehUtxKWw6ep1NRyOJTEhj3eFrrDt8jcruDrzYuCIvNqpEZQ8HS4f85K7+BooBquQ9P4UQQojCiUpKJzVTj5VWQ5XSUE4IIYQoNmR67tJGq4Xe/4HKLSAjCVb3gaQblo6qRKvq6cibz9fkl7fbs/a1Z3mpSSUcbXRcvZVK2K5ztJm7h75fHGDdoaskpZfApexuX4F1A2HZ87C8M/z2H0tHJIQQpcLFWHWiu8ruDrIiihBCCLOSUqU0sraD/mvAswYkRcLqlyA9ydJRlXharYYW1TyY+1IDfp/cibB+DWkd6IlGA4cu32LCphM0+2AXY9b+wc9nYsjWGywd8sNlpcGe2fBZEJz+HsgZJrDtbfhlvkVDE0KI0uBirEx0J4QQomhI1/rSysEdBv4P/tsRov+CDa/AyxvBqhTO2m8B9jY6ejWqSK9GFYlKTGfLsUi+OXKdczHJfHf8Bt8dv4GXky29G1WkZ0Nfavs4o9UWk/H0iqIm7tsnQeJV9Zh/a+gyB05thZ9nqxMmZiRDhykg8wAIIcRjuRB7d+k5mehOCCGEeUkiX5q5VYGBG2B5N7j4M3z3b+i1WBIzM/NxsWNk22r8s00AJyITjUvZxd7JYMm+iyzZdxEnWyueqehC/Uou1K/kSv1KLlRys3/6k+XFnlVb3C/uUfedK8LzH0Dd3urPRfk6YOMIP02GXxdAZoq6GoJWOu8IIURh3ZuxXlrkhRBCmJck8qWdbyN4aQWs7Q/H16rL0v3fu5aOqlTSaDQ5Sbork7rW5uczMXxz9Dp7z8ZyJyObAxfjOXAx3ni+u6MN9R5I7ssX1Xr16Umw9yP47QswZIPOBlr+G1qHqon7/VqOAWsH+OFNOPQfNZl/YSFoZdk9IYQojLtj5AOkRV4IIYSZSSJfFtR4HrovgO/Gwr454FIJmgyxdFSlmo2Vlufr+vB8XR+y9QbOxSRz4noix68ncCIykVM3k7iVksnes7HsPRtr/Fx5Z1vqVXSlQSUX6uUk+O6OTzAcQlHgz/WwcwokR6vHanSBzrPAPSD/zzUbATblYMvrcGwVZKVA7yUyNEMIIQooLVNPZEIaIGPkhSgsvV5PVlYJnEBYiEewtrZGpzNP45gk8mVFk6HqsnT75sL3b4CzLwR2snRUZYKVTkvtCs7UruBM32Z+AGRk6zl98w5/Riby5zU1uT8bfYfopAyik6LZdSra+PlKbvY0qOSak9i7UK+iC0521o++8Y1jajf6a7+p++4B0PkjtWKnIBr0AxsH2DgM/t6sTo730kp1MkUhhBAPdTFO7Vbv5mD9ZBWyQpQhiqIQFRVFQkKCpUMRosi4urri4+PzxENsJZEvS9q/qybzx9fChiEw7Ae167146mytdDTwc6WBnys8WwWA1MxsTt5I4vj1RE5cT+DP64lcjEvh+u00rt9O44cTN42fD/ByVJP7ii408HOhTgUX7G1yavdSb6mT1R1ZAShg7QhtxkOLUWBlW7hAa/eAAetg/UA4ux3WvAT914KttC4JIcTD3OtWL78vhSiou0m8t7c3Dg4OT38uISGKkKIopKamEhMTA0CFChWe6HqSyJclGg30WAh3bqqT363uC6/uUifFExbnYGNFU393mvq7G48lpmXxd2SimtxHJnD8WiKRCWlcjE3hYmwKm/+IBECn1VDTy55XHfbRLW4ptlmJ6gWeCYFOM8Cl4uMHFtgRBn0Da/rBpX3wdW8YuBHsXZ/g2wohROl2b6I7GR8vREHo9XpjEu/h4WHpcIQoEvb29gDExMTg7e39RN3sJZEva6xsoO9XsKwLxPwNq/vA8B3qcnWi2HGxt6ZldU9aVvc0HotPzuDPyEROXE/kz+sJHL+eSJXk40y7vZK6iVcAOGXw4wPDMJKjmlNvzy3qVzJQv5IL1b3KYaV7jBno/Z+DwVth1Ytw/RCs7A6vbAFHz0d+VAghyiJpkReicO6OiXdwcLBwJEIUrbs/41lZWZLIi0Kyc1FbVJd2grizsG4gvLJZxj6XEB7lbGlf05v2Nb0h6SbKziVoTmwAIF3nxHqnwSxMbE18pgGuq635oK4Xb2+to66vM/UrudLATx1v7+/hWLA17is1gaE/wNe9IOoELO8Kg7eo8y0IIYQwIUvPCfF4pDu9KO3M9TMuiXxZ5VJRTeaXdYar+2HLSAhZJuuFlxTZmfDbYtg7B01mMqCBxq9g1+F9hjh6MlhRuHYrjT8j1bH2x68l8FdkIimZen6/cpvfr9w2XsrJzipnGTxXaldworK7A5XdHXB3tMn9i8bnGRi2Hb56AeLOwPIuaku9DM8QQggjg0GRpeeEEEIUKUnky7LydaHfKlgVos5K7lwRgmdaOirxKOd3wbYJEH9O3a/YFLrOhYqNjadoNBoqezhQ2cOB7vXVFnODQeFiXDJ/Xk/M2RL4+0YSd9Kz2X8hnv0X4k1u42ijwy8nqa/srl5L3feh0uAfsF3dG25fUiuDBn8LXjWe2iMQQojiLCopnbQsPVZaDZXdpZuwEKLw/P39GTduHOPGjbN0KKKYkkS+rAtoCz0/g83/gAOLwMYRmo+UMfPF0e3LsH0SnPlB3Xf0go7ToMGAAvWk0Go1VPd2orq3Ey82rgRAlt7Auehk41j7C7HJXLuVSlRSOimZek5H3eF01J1c19Jo4Bmnd/ncajp+d66SuuR5DrZaikvVxlR2d8CzXB6t+UIIUUbcbY2v7OGA9ePMSyKEKDEe9ffO+++/z9SpUwt93cOHD+PoaJ4ePWvXrmXQoEGMHDmSzz77zCzXFJYnibxQ1wtPvAa7Z8Dej2DfPKjaBur0VJcfkwnNLCszFSLC4Ncw0GeARqdWtrR7R53v4AlY67TU8XWmjq8z/YPuHU/P0hOZkMbVW6lcu5XK1fhUrt66t6Vm6jmR5MALTOIrmw+pl3WZJnsGMWTHBI4p1bG31lHZ3eG+Fn17tYeAuwOV3Byws378iT2EEKK4k/HxQpQdN2/eWx54/fr1TJkyhTNnzhiPlSt37/eAoijo9XqsrB6dgnl5eZktxqVLl/L222/zn//8h/nz52NnZ7l5sTIzM7GxsbHY/UsTqSYWqtZvQtd5UL4eKHq4uAe+HwfzAmFlDzi8FJJjLB1l2aIocPJb+CxIrWDRZ6gVLK9HQOdZT5zEP4ydtY5qXuVoX9ObwS38mdy9DksGN2X7uDb8PS2YI5M7svlfLZnavw0HnlvBZYdncNGkssZ2Fs9qT5KWpedM9B12nYpmWcQlpn53kuErfqfjgn3Uem87zWft4qUv9hO64Rhhu86y6eh1fr98i5ikdBRFKbLvJYQQT8PFnERexscL8WQURSE1M9siW0H/HvHx8TFuLi4uaDQa4/7p06dxcnJi27ZtNGnSBFtbW3799VcuXLhAz549KV++POXKlaNZs2bs2rXL5Lr+/v6EhYUZ9zUaDf/973/p3bs3Dg4OBAYGsnXr1kfGd+nSJfbv38+ECROoUaMGmzZtynXOsmXLqFu3Lra2tlSoUIHRo0cb30tISOCf//wn5cuXx87OjmeeeYbvv/8egKlTp9KwYUOTa4WFheHv72/cHzp0KL169WLmzJn4+vpSs2ZNAL7++muaNm2Kk5MTPj4+vPzyy8b11e/6+++/6d69O87Ozjg5OdG6dWsuXLjAvn37sLa2JioqyuT8cePG0bp160c+k9JCWuSFSqOBoNfULf6CmkCe3AI3j6trh1/aBz+Ohyqt7rXUO/lYOurSK+Y0bHsbLu1V950rqfMX1Omp/reyII1Gg0c5WzzK2dKoshtQEdr9BGsH4HBpL2sd5hHd+UvOOLfIs0U/OSOb6KQMopMyOHz5dq7r21lr8XNzeKBFP2eMvpsD9jbSmi+EKN4u5HStlxZ5IZ5MWpaeOlN2WOTeJ6cH42BjnlRpwoQJzJs3j4CAANzc3Lh27Rpdu3Zl5syZ2Nra8tVXX9GjRw/OnDlD5cqV873OtGnTmDNnDnPnzuXTTz9l4MCBXLlyBXf3/IfELl++nG7duuHi4sKgQYNYunQpL7/8svH9xYsXExoayocffkiXLl1ITEwkIiICAIPBQJcuXbhz5w6rVq2iWrVqnDx5stBLpoWHh+Ps7MzOnTuNx7KyspgxYwY1a9YkJiaG0NBQhg4dyo8//ghAZGQkbdq0oV27duzevRtnZ2ciIiLIzs6mTZs2BAQE8PXXX/PWW28Zr7d69WrmzJlTqNhKMknkRW4e1aB1qLrdupST1H8LN47C5V/U7ce3oHILNbGs84IsQWYu6Ulq6/tvX4AhG3S20GosPPcG2BTjCZNsHOHlDbBxKJqz2/D5cTg+fZbCsz1NTlMUhYTULJNu+tfue30jIY30LAPnYpI5F5Oc5628nGyp7O6Aj4sdXuVs8XK6bytni7eTLe6ONljJuFQhhIVcNHatlxZ5IQRMnz6dTp06Gffd3d1p0KCBcX/GjBls3ryZrVu3mrSGP2jo0KEMGDAAgFmzZrFw4UIOHTpE586d8zzfYDCwYsUKPv30UwD69+/Pm2++yaVLl6hatSoAH3zwAW+++SZjx441fq5Zs2YA7Nq1i0OHDnHq1Clq1FAnNQ4ICCj093d0dOS///2vSZf64cOHG18HBASwcOFCmjVrRnJyMuXKleOzzz7DxcWFdevWYW1tDWCMAWDEiBEsX77cmMh/9913pKen07dv30LHV1JJIi8ezr0qPDdO3W5fgVNb1aT++mF12bqr+2H7O+DXPCep7wkulSwddcljMMCf62Dn+5CS062oZlcInqX+NygJrO2g39ew+Z/w1zewcSj0/BwaDjCeotFocHO0wc3RhgZ+rrkukaU3cCNnbP6Dif6V+FTupGcTeyeD2DsZDw1FowEPRxs880j07772drLFq5wdzvZWMjGfEMJsUjOzuZGYDkCAp7TIC/Ek7K11nJwebLF7m0vTpk1N9pOTk5k6dSo//PADN2/eJDs7m7S0NK5evfrQ69SvX9/42tHREWdn51zd0e+3c+dOUlJS6Nq1KwCenp506tSJZcuWMWPGDGJiYrhx4wYdOnTI8/PHjh2jUqVKJgn046hXr16ucfFHjhxh6tSpHD9+nNu3b2MwGAC4evUqderU4dixY7Ru3dqYxD9o6NChTJ48mYMHD/Lss8+yYsUK+vbta7YJAksCSeRFwblVgZZj1C3hGpz6Tu1+f+23e9uOSepyaHV7Qe0XZH3xgrhxTO3hcP2Quu9eDbrMgcCOFg3rseis4cUvwdoB/vgatoyEzGR1yEYBWOu0VPFwpIpH3r+EE+9rzY+5k25M6mOTM4yv45IzMCgQl5xJXHJmnrPu389Gp8XLyRbPBxL9+xN/bydbPMvZSrd+IcQj3Z2x3j2n0lII8fg0Go3Zurdb0oPJ5fjx49m5cyfz5s2jevXq2Nvb06dPHzIzMx96nQeTWo1GY0yA87J06VJu3bqFvb298ZjBYODPP/9k2rRpJsfz8qj3tVptrrkEsrKycp334PdPSUkhODiY4OBgVq9ejZeXF1evXiU4ONj4DB51b29vb3r06MHy5cupWrUq27Zt4+eff37oZ0qbkv9/hrAMVz9o8S91S7qhJvV/b4GrByDyd3X7aTL4Nr7XUl9SWpaflpR42D0djqwEFLB2hLZvwbP/AitbS0f3+LQ66LFQ7W7/2xfq3AqZKWqvjifk4mBNPQcX6lXKf6I/vUHhdmrmvST/gUT//v3EtCwy9QYiE9KITEh75P3L2VrlatnPa99DuvYLUWZdjFMT+QDPstMqJIQonIiICIYOHUrv3r0BtYX+8uXLZr1HfHw83377LevWraNu3brG43q9nueee46ffvqJzp074+/vT3h4OO3bt891jfr163P9+nXOnj2bZ6u8l5cXUVFRKIpi7N147NixR8Z2+vRp4uPj+fDDD/Hz8wPg999/z3XvlStXkpWVlW+r/KuvvsqAAQOoVKkS1apVo1WrVo+8d2kiibx4cs6+0Pyf6nYnKqel/lu4EqGOq79xFHa9DxUa5CT1vdRx+GWVPhuOLIfdH0B6gnqs3kvQaXrpmWtAq4XOH4JNOfhlnvrfPzMF2k8q8sn6dFoNnuXUFvTaFR5+bka2nrjkB5L+OxnEJpu29sckZZCRbSA5I5vkjGwu5fyhnh+NBtwdbNSkvpwNDjZWONjosLfWYWetwz7ntb21Drv7XtvbaLG3tnrgfa3xtVQOCFH8XYiRpeeEEA8XGBjIpk2b6NGjBxqNhvfee++hLeuP4+uvv8bDw4O+ffvmGkLYtWtXli5dSufOnZk6dSojR47E29vbOLFdREQEY8aMoW3btrRp04aQkBAWLFhA9erVOX36NBqNhs6dO9OuXTtiY2OZM2cOffr0Yfv27Wzbtg1nZ+eHxla5cmVsbGz49NNPGTlyJH/99RczZswwOWf06NF8+umn9O/fn4kTJ+Li4sLBgwcJCgoyznwfHByMs7MzH3zwAdOnTzfr8ysJJJEX5uXkc2/2++SYe0n95V/UGfBvHofw6eoyd3VzknrPQEtH/fRc2Q8/vg3RJ9T98vWg6xyo0tKycRUFjQY6vAe25WDXVNg3R03mg2dafOb9u2ytdFR0taei68O7bymKQnJG9iNb+GPvZBCfkoneoBCfkkl8ysO7yBWWtU6jVgTcXxmQb6WAzniusRLhgUqDB6/lYGOFjZVUFgjxJIwt8jLRnRAiHwsWLGD48OG0bNkST09P3nnnHZKSksx6j2XLltG7d+885wEKCQnhlVdeIS4ujiFDhpCens7HH3/M+PHj8fT0pE+fPsZzv/nmG8aPH8+AAQNISUmhevXqfPjhhwDUrl2bzz//nFmzZjFjxgxCQkIYP348S5YseWhsXl5erFixgkmTJrFw4UIaN27MvHnzeOGFF4zneHh4sHv3bt566y3atm2LTqejYcOGJq3uWq2WoUOHMmvWLAYPHvykj6zE0SiyaHMuSUlJuLi4kJiY+MgaJVFAKXFw+nu1+/2lfepa9Xd511ET+jo9wbuWpSIsWkk3YOcUOLFR3bdzhf+bDE2Gga4M1Kcd+lLtYg/QeDB0D1O74JdCD3btj0/JIC3TQFqWnvQsPWmZetKycrZM0/3737/7OjVLz9P8Le1oo8PVwQYXe2tcHdTNxd5GfW3/wL6DNa45r+3MOCmQyJuUTeZVVM+z6ye/cPJmEv8d3JSOdcqb7bpClHbp6enG2dTt7OwsHY4oIUaMGEFsbCxbt261dCgF9rCf9cKUTWUggxDFgqMnNBmqbqm31KT+5Ldw8WeIOaluP88Cr1r3ut971y42LbeFps+C9ERIS1C/6945kJUCaKDJEPi/KeDoYekon56g19QJ8LaOhqNfQWYq9P5CnRyvlClM1/6CUBSFTL3hXsJvkugb7lUC3FchkJqZu9Ig/YEKhPQHzs3Sq7UFKZl6UjILNmfA/eystcak3lgJcHf/vteu9jn7Dja42lvjYKMr+KoB6YlwYY/6e8OQBY7eUM4bHL3UrZy3eszeTR3eIcRTZjAoxqE30iIvhBBFJzExkRMnTrBmzZoSlcSbkyTy4ulzcFdbZRsPhrTbcPpHNam/sBtiT8Pe0+pa6h6B6uz3dXpC+WeeblKvKGo38PSEewl5eqK6f/9r43sPnJeVxxjqSkFqN3rfRk/vexQnjQaCjQN88yr89T/ISoM+y9Rl60S+NBoNtlY6bK10uBbhfbL0BlIysklMyyIhNYuEtCwSUjPv7admkZCWmfM6k4S0LBJzztMbFNKzDERlpROVlF6o+1rrNPm3+NtZUVV/iYDEg/jG/YJL7FE09/fmyY9Gp1YeOnpDOa/cib6jV85xb/W8UlihJCzjZlI6aVl6rHUa/NwdLB2OEEKUWj179uTQoUOMHDmSTp06WToci5BEXliWvZua4DUaqCbBZ7er3e8vhEP8Odg3V93cA+51v6/QoGBJvT4bMpLUyoKHJuH5vGfIfvLvZ+sMThXguTegfj9pJazbW22ZX/8KnPkB1vaH/qvVGe6FRVnrtGoruYMNVQrRWeTu/AEJqVn3VQJk3refaawYSDSpDFBXDMjSK8Qlq8sGAjiRSivtXzTTHqOt7k8qaG6Z3O+8wZe9hgbcUpzw1CSqG0l4ahLx0CTirklWh+4kR6tb9KO/QyLluKVx5bbGlQSNKwlaF25rXEnUupGgdSNR60Ki1o0kK1eytXZoNBq0GtDm/Gu6r0Fz33tajYb2tbwZ9KwsxVkWXIxVJ7qr7O6AtUxOKYQQRaasLTWXF0nkRfFh7woN+qtbehKc3aGuU39uJ9y6CL8uUDc3f6jVXU2SH5agZz58/fAC0Vqp49ntXcHORX1t55Kzf/9rl7zPK6XjwJ9IjWAY9D9Y0x8u7oFVIfDyevV5iRJHo9HgZGeNk501foX4nKKorfi3UzJIu34Cq4u7KHdtD27xf6BV7lWiZWjs+MumAQe0jditb8CpNHfSsvNvlbciG3fu4JWT2HuSk+xrknKS/nuv3UnCSmPAhWRclGSqKtfVizyk0f+OYk+84kwcLsQpLsQpzsTjQqxiuh+nuHAHe0BDRbeHT6YoSg+ZsV4IIcTTIom8KJ7snKH+S+qWcScnqf9WTepvX4YDiwp+LWvHgifeD55n7VByx+kXZ1XbwOAtsKoPXD0AK1+AQZvK1rwBZVl6EpqLP2N/fif253bBnRum73sEQmAnqN4R2yqtaGJtRxNg9N2PZ+nJ0hswKGqFgEEBg6JgUBQU42t1vLJy33v3nx+vKMTo9WjTE9CmxqJLjUWXFotVWjxWaXFYpcVilRaHdXo81mlx2KTHoTVk4qRJw0mThn8Bmvr1WhvSbdxJ0ocAs8z9FEUxdG/GeknkhRBCFC1J5EXxZ+sE9fqoW2YKnPsJzoeDRptPgu5232sXGf9aXPkFwdDv4evecPMYrOimJvdOPpaOTJiboqgTWp7bCed3qZU39w9dsbJXK3dyknfcqz70cnbWOjPOku8GPPx+gPodMpLUFTiSYyAlJuffuPtex947lnkHnSETx/QoHGWodJlxIfZui7wMFxJCCFG0JJEXJYuNozrOum5vS0cizKFCfRi2Db56AWJPwfIuMPhbcK1s6cjEk0pPgkt77yXvSZGm73tUh+qdILAjVHmu+E96qNHcqxz0qPbo8zNT1cQ+JU6tWBRlwsVYaZEXQgjxdMhMLEIIy/KqoSbzrlXUuRCWdYG485aOShSWokD0SYj4BFZ0hzlVYf0gOLpSTeKt7CDweegyF/79B4w5Al0+VFvgi3sS/zhsHMCtClRqUrDEvwz47LPP8Pf3x87OjubNm3Po0KF8z83KymL69OlUq1YNOzs7GjRowPbt203OmTp1KhqNxmSrVatWUX+NfKVkZHMzUV21QVrkhRBCFDVpkRdCWJ571ZyW+Z7qagXLu6jd7MvXtXRk4mEy7sDFvXB+J5zbBUnXTd93r5bTXb4T+LcCa5n0raxav349oaGhfPHFFzRv3pywsDCCg4M5c+YM3t7euc6fPHkyq1at4ssvv6RWrVrs2LGD3r17s3//fho1ureEZ926ddm1a5dx38rKcn/W3F0/3sNRXf1BCCGEKErSIi+EKB5cKqrJfPl66pjjFd0g8qilo3p82ZkQexYu7IZrh9TXyTHq8ZJKUSDmFEQsVFvdP6oK6wfCkRVqEm9lpybtXebAmKPw76PQ5SO1+7wk8WXaggULeO211xg2bBh16tThiy++wMHBgWXLluV5/tdff82kSZPo2rUrAQEBvP7663Tt2pX58+ebnGdlZYWPj49x8/T0fBpfJ0/3xsdLt3ohROG1a9eOcePGGff9/f0JCwt76Gc0Gg1btmx54nub6zri6ZIWeSFE8VHOC4Z+B6tfguuH1dnsB26AKi0tHVneFEVdqzzunNqTIP7Cvde3r6jrmefF2uG+VRPy+tct//esnnJLX0ay6Vj3xGum77tVVbvMB3YC/+ckYRe5ZGZmcuTIESZOnGg8ptVq6dixIwcOHMjzMxkZGdjZmQ65sLe359dffzU5du7cOXx9fbGzs6NFixbMnj2bypXznmMjIyODjIwM435SUtLjfqU8XTCOj5du9UKUJT169CArKyvX8B+AX375hTZt2nD8+HHq169fqOsePnwYR0fz/j6ZOnUqW7Zs4dixYybHb968iZubm1nvlZ+0tDQqVqyIVqslMjISW1vbp3Lf0kgSeSFE8WLvBq9shrUD4PIv8PWL0H+VOpbaUjJT1CQ9/pw6fj/+XE7CfgEy7+T/OZty4OIHWamQnqBOAIei7mel5l52rSAeWQnw4L9uhasEUBSIPZPTXf4nuHIADFn33tfZQtXWORPVdZLx3+KR4uLi0Ov1lC9f3uR4+fLlOX36dJ6fCQ4OZsGCBbRp04Zq1aoRHh7Opk2b0OvvVY41b96cFStWULNmTW7evMm0adNo3bo1f/31F05OTrmuOXv2bKZNm2beL3efi9IiL0SZNGLECEJCQrh+/TqVKlUyeW/58uU0bdq00Ek8gJeXl7lCfCQfn6e3YtA333xD3bp1URSFLVu20K9fv6d27wcpioJer7fosKwnUTKjFkKUbrZOMHAjbBisJpNrB0Cf5VC7e9Hd06BXW5vvJurx53OS9fO5Z1y/n0arTtTnGaiuf+5ZXZ2R3SNQXUpPozG9R0YSpN2GtAQ1uS/ov0+jEuDOzXxa3f3VVvfqOa3uNrKemihan3zyCa+99hq1atVCo9FQrVo1hg0bZtIVv0uXLsbX9evXp3nz5lSpUoUNGzYwYsSIXNecOHEioaGhxv2kpCT8/PzMFrO0yAtRBJSccs8SrB1My/B8dO/eHS8vL1asWMHkyZONx5OTk9m4cSNz584lPj6e0aNHs2/fPm7fvk21atWYNGkSAwYMyPe6/v7+jBs3ztjd/ty5c4wYMYJDhw4REBDAJ598kusz77zzDps3b+b69ev4+PgwcOBApkyZgrW1NStWrDBWZmpyvtfy5csZOnQoGo2GzZs306tXLwBOnDjB2LFjOXDgAA4ODoSEhLBgwQLKlVMrKocOHUpCQgLPPfcc8+fPJzMzk/79+xMWFoa19cOXfV66dCmDBg1CURSWLl2aK5H/+++/eeedd9i3bx+KotCwYUNWrFhBtWpqw8GyZcuYP38+58+fx93dnZCQEBYtWsTly5epWrUqf/zxBw0bNgQgISEBNzc39uzZQ7t27fj5559p3749P/74I5MnT+bEiRP89NNP+Pn5ERoaysGDB0lJSaF27drMnj2bjh3vNSJlZGQwZcoU1qxZQ0xMDH5+fkycOJHhw4cTGBjIyJEjGT9+vPH8Y8eO0ahRI86dO0f16tUf+kwelyTyQojiydoe+q2GTa/ByS1qUt/7C6jf98mum3rrvtb1c/da2W9dBH1G/p9z8LiXoHve/TdQTXKtCtgtTKvLaSF/jO5rxkqAhHwS/odUDhS2EkBnqybsdyeq86hWoD9mhMiLp6cnOp2O6Ohok+PR0dH5tgJ5eXmxZcsW0tPTiY+Px9fXlwkTJhAQEJDvfVxdXalRowbnz+e96oWtrW2RdeE0GBQuxakt8rL0nBBmlJUKs3wtc+9JN9Rljx/BysqKwYMHs2LFCt59911jkrxx40b0ej0DBgwgOTmZJk2a8M477+Ds7MwPP/zAK6+8QrVq1QgKCnrkPQwGAy+++CLly5fnt99+IzEx0WQ8/V1OTk6sWLECX19fTpw4wWuvvYaTkxNvv/02/fr146+//mL79u3GSUJdXFxyXSMlJYXg4GBatGjB4cOHiYmJ4dVXX2X06NGsWLHCeN6ePXuoUKECe/bs4fz58/Tr14+GDRvy2muv5fs9Lly4wIEDB9i0aROKovDGG29w5coVqlSpAkBkZCRt2rShXbt27N69G2dnZyIiIsjOzgZg8eLFhIaG8uGHH9KlSxcSExOJiIh45PN70IQJE5g3bx4BAQG4ublx7do1unbtysyZM7G1teWrr76iR48enDlzxjhca/DgwRw4cICFCxfSoEEDLl26RFxcHBqNhuHDh7N8+XKTRH758uW0adOmyJJ4kEReCFGcWdlAyFK1Vvz4Gtj0D7Wbe9NhD/9cdibcvnTf2PXz91raU+Pz/5zORp1p/W6i7lE9p6W9Oji4m/e7FdYTVQIYICPx0a3+VvZQrT34t5ZWd2E2NjY2NGnShPDwcGNrj8FgIDw8nNGjRz/0s3Z2dlSsWJGsrCy++eYb+vbNvyIvOTmZCxcu8Morr5gz/AK5kZhGepYBa50GPzeZJ0KIsmb48OHMnTuXvXv30q5dO0BN5EJCQnBxccHFxcUkyRszZgw7duxgw4YNBUrkd+3axenTp9mxYwe+vmrFxqxZs0x6JgEmPQL8/f0ZP34869at4+2338be3p5y5coZJwnNz5o1a0hPT+err74yjtFftGgRPXr04KOPPjIOk3Jzc2PRokXodDpq1apFt27dCA8Pf2giv2zZMrp06WIcjx8cHMzy5cuZOnUqoC5T6uLiwrp164wt+zVq1DB+/oMPPuDNN99k7NixxmPNmjV75PN70PTp0+nUqZNx393dnQYNGhj3Z8yYwebNm9m6dSujR4/m7NmzbNiwgZ07dxpb6e+vWB46dChTpkzh0KFDBAUFkZWVxZo1a5g3b16hYysMSeSFEMWbzgp6fqbWih/+Er4fpybzLUbBnSg1Sb9/7Hr8+YdPNAfg5Gvaqu4RqLY6u1ZWE+bSRqt9/EoAIcwgNDSUIUOG0LRpU4KCgggLCyMlJYVhw9RKucGDB1OxYkVmz54NwG+//UZkZCQNGzYkMjKSqVOnYjAYePvtt43XHD9+PD169KBKlSrcuHGD999/H51O99CuqkXlYk63+ioejljpZEEgIczG2kFtGbfUvQuoVq1atGzZkmXLltGuXTvOnz/PL7/8wvTp0wHQ6/XMmjWLDRs2EBkZSWZmJhkZGTg4FOwep06dws/Pz5jEA7Ro0SLXeevXr2fhwoVcuHCB5ORksrOzcXZ2LvD3uHuvBg0amEy016pVKwwGA2fOnDEm8nXr1kWnu/c3U4UKFThx4kS+19Xr9axcudJkSMCgQYMYP348U6ZMQavVcuzYMVq3bp1n9/yYmBhu3LhBhw4dCvV98tK0aVOT/eTkZKZOncoPP/zAzZs3yc7OJi0tjatXrwJqN3mdTkfbtm3zvJ6vry/dunVj2bJlBAUF8d1335GRkcFLL730xLE+TLFI5D/77DPmzp1LVFQUDRo04NNPP31o7dTGjRt57733uHz5MoGBgXz00Ud07drV+L6iKLz//vt8+eWXJCQk0KpVKxYvXkxgYODT+DpCCHPTaqHrXDWZjwiDn96Fn2dDZnL+n7Epl9MV/r5Wdc9AtcXdVrq+CvE09evXj9jYWKZMmUJUVBQNGzZk+/btxj8Ir169ilZ7LwFOT09n8uTJXLx4kXLlytG1a1e+/vprXF1djedcv36dAQMGEB8fj5eXF8899xwHDx58qhNE3XVv6TkZHy+EWWk0BereXhyMGDGCMWPG8Nlnn7F8+XKqVatmTPzmzp3LJ598QlhYGPXq1cPR0ZFx48aRmWm+JWkPHDjAwIEDmTZtGsHBwcaW7QeX7TSXB5NtjUaDwWDI9/wdO3YQGRmZa0y8Xq8nPDycTp06YW+ff4+mh70HGMsQRVGMx7KysvI898HVAMaPH8/OnTuZN28e1atXx97enj59+hj/+zzq3gCvvvoqr7zyCh9//DHLly+nX79+Ba6oeVwWT+TXr19PaGgoX3zxBc2bNycsLIzg4GDOnDmDt7d3rvP379/PgAEDmD17Nt27d2fNmjX06tWLo0eP8swzzwAwZ84cFi5cyMqVK6latSrvvfcewcHBnDx5MtdyNkKIEkKjgU7T1Inwds9Qk/gHJ5rzqHbv9YMTzQkhLGr06NH5dqX/+eefTfbbtm3LyZMnH3q9devWmSu0J3bRONGdVBIKUVb17duXsWPHsmbNGr766itef/1143j5iIgIevbsyaBBgwB1eNHZs2epU6dOga5du3Ztrl27xs2bN6lQoQIABw8eNDln//79VKlShXfffdd47MqVKybn2NjYmKz+kd+9VqxYQUpKijHhjYiIQKvVUrNmzQLFm5elS5fSv39/k/gAZs6cydKlS+nUqRP169dn5cqVZGVl5aoocHJywt/fn/DwcNq3b5/r+ncrcW/evEmjRo0Aci2zl5+IiAiGDh1K7969AbWF/vLly8b369Wrh8FgYO/evSYT4N2va9euODo6snjxYrZv386+ffsKdO8nolhYUFCQMmrUKOO+Xq9XfH19ldmzZ+d5ft++fZVu3bqZHGvevLnyz3/+U1EURTEYDIqPj48yd+5c4/sJCQmKra2tsnbt2gLFlJiYqABKYmJiYb+OEOJpuHVJUaJPKUpWuqUjEeKpkbLJvMz5PKMT05S9Z2KUc9FJZohMiLIpLS1NOXnypJKWlmbpUB7biBEjFDc3N0Wn0ymRkZHG42+88Ybi5+enREREKCdPnlReffVVxdnZWenZs6fxnLZt2ypjx4417lepUkX5+OOPFUVR86M6deoonTp1Uo4dO6bs27dPadKkiQIomzdvVhRFUb799lvFyspKWbt2rXL+/Hnlk08+Udzd3RUXFxfjNVevXq04Ojoqf/zxhxIbG6ukp6t/R91/nZSUFKVChQpKSEiIcuLECWX37t1KQECAMmTIEON1hgwZYhK7oijK2LFjlbZt2+b5XGJiYhRra2tl27Ztud778ccfFVtbWyU+Pl6Ji4tTPDw8lBdffFE5fPiwcvbsWeWrr75STp8+rSiKoqxYsUKxs7NTPvnkE+Xs2bPKkSNHlIULFxqv9eyzzyqtW7dWTp48qfz8889KUFCQAih79uxRFEVR9uzZowDK7du3TWLo3bu30rBhQ+WPP/5Qjh07pvTo0UNxcnIy+e8xdOhQxc/PT9m8ebNy8eJFZc+ePcr69etNrjNp0iTFxsZGqV27dp7P4a6H/awXpmyy6ECuzMxMjhw5YlKzodVq6dixIwcOHMjzMwcOHMhVExIcHGw8/9KlS0RFRZmc4+LiQvPmzfO9ZkZGBklJSSabEKIYc/MH71oFny1eCCGKkLezHW1qeFHdO/f69UKIsmPEiBHcvn2b4OBgk/HskydPpnHjxgQHB9OuXTt8fHyMk38WhFarZfPmzaSlpREUFMSrr77KzJkzTc554YUXeOONNxg9ejQNGzZk//79vPfeeybnhISE0LlzZ9q3b4+Xlxdr167NdS8HBwd27NjBrVu3aNasGX369KFDhw4sWrSocA/jPncnzstrfHuHDh2wt7dn1apVeHh4sHv3bpKTk2nbti1NmjThyy+/NLbODxkyhLCwMD7//HPq1q1L9+7dOXfunPFay5YtIzs7myZNmjBu3Dg++OCDAsW3YMEC3NzcaNmyJT169CA4OJjGjRubnLN48WL69OnDv/71L2rVqsVrr71GSkqKyTkjRowgMzPTOP9LUdMoyn0DCZ6yGzduULFiRfbv328yYcPbb7/N3r17+e2333J9xsbGhpUrV5pMZvP5558zbdo0oqOj2b9/P61ateLGjRvGriegdnfRaDSsX78+1zWnTp1qXFfxfomJiYWeIEIIIYQoCklJSbi4uEjZZCbyPIUoXtLT07l06RJVq1aVobCiRPrll1/o0KED165dM84Bk5eH/awXpmySqVWBiRMnkpiYaNyuXbtm6ZCEEEIIIYQQQhRzGRkZXL9+nalTp/LSSy89NIk3J4sm8p6enuh0OqKjo02OR0dH57u+oY+Pz0PPv/tvYa5pa2uLs7OzySaEEEIIIYQQQjzM2rVrqVKlCgkJCcyZM+ep3deiibyNjQ1NmjQhPDzceMxgMBAeHp7n2oigrpl4//kAO3fuNJ5ftWpVfHx8TM5JSkrit99+y/eaQgghhBBCCCFEYQ0dOhS9Xs+RI0eoWLHiU7uvxZefCw0NZciQITRt2pSgoCDCwsJISUkxThIwePBgKlasyOzZswEYO3Ysbdu2Zf78+XTr1o1169bx+++/s2TJEkBdw/Du5AaBgYHG5ed8fX0LNamEEEIIIYQQQghRHFk8ke/Xrx+xsbFMmTKFqKgoGjZsyPbt241jC65evYpWe6/jQMuWLVmzZg2TJ09m0qRJBAYGsmXLFuMa8qBOlpeSksI//vEPEhISeO6559i+fbtMnCGEEEIIIUQxZsF5uIV4Ksz1M27RWeuLK5nJVgghRHEjZZN5yfMUonjR6/WcPXsWb29vPDw8LB2OEEUmPj6emJgYatSogU6nM3mvMGWTxVvkhRBCCCGEEGWbTqfD1dWVmJgYQF3PXKPRWDgqIcxHURRSU1OJiYnB1dU1VxJfWJLICyGEEEIIISzu7gpTd5N5IUojV1fXfFdTKwxJ5IUQQgghhBAWp9FoqFChAt7e3mRlZVk6HCHMztra+olb4u+SRF4IIYQQQghRbOh0OrMlO0KUVhZdR14IIYQQQgghhBCFI4m8EEIIIYQQQghRgkgiL4QQQgghhBBClCAyRj4PiqIA6jp+QgghRHFwt0y6W0aJJyNlvRBCiOKmMGW9JPJ5uHPnDgB+fn4WjkQIIYQwdefOHVxcXCwdRoknZb0QQojiqiBlvUaRqv1cDAYDN27cwMnJCY1G80TXSkpKws/Pj2vXruHs7GymCIU8V/OTZ2p+8kyLRll9roqicOfOHXx9fdFqZWTckzJnWQ9l9+eyKMkzNT95pkVDnqv5ldVnWpiyXlrk86DVaqlUqZJZr+ns7FymfgifFnmu5ifP1PzkmRaNsvhcpSXefIqirIey+XNZ1OSZmp8806Ihz9X8yuIzLWhZL1X6QgghhBBCCCFECSKJvBBCCCGEEEIIUYJIIl/EbG1tef/997G1tbV0KKWKPFfzk2dqfvJMi4Y8V1Ecyc+l+ckzNT95pkVDnqv5yTN9NJnsTgghhBBCCCGEKEGkRV4IIYQQQgghhChBJJEXQgghhBBCCCFKEEnkhRBCCCGEEEKIEkQSeSGEEEIIIYQQogSRRL6IffbZZ/j7+2NnZ0fz5s05dOiQpUMqsWbPnk2zZs1wcnLC29ubXr16cebMGUuHVap8+OGHaDQaxo0bZ+lQSrzIyEgGDRqEh4cH9vb21KtXj99//93SYZVYer2e9957j6pVq2Jvb0+1atWYMWMGMl+rKA6krDcvKe+LnpT35iFlvflJeV9wksgXofXr1xMaGsr777/P0aNHadCgAcHBwcTExFg6tBJp7969jBo1ioMHD7Jz506ysrJ4/vnnSUlJsXRopcLhw4f5z3/+Q/369S0dSol3+/ZtWrVqhbW1Ndu2bePkyZPMnz8fNzc3S4dWYn300UcsXryYRYsWcerUKT766CPmzJnDp59+aunQRBknZb35SXlftKS8Nw8p64uGlPcFJ8vPFaHmzZvTrFkzFi1aBIDBYMDPz48xY8YwYcIEC0dX8sXGxuLt7c3evXtp06aNpcMp0ZKTk2ncuDGff/45H3zwAQ0bNiQsLMzSYZVYEyZMICIigl9++cXSoZQa3bt3p3z58ixdutR4LCQkBHt7e1atWmXByERZJ2V90ZPy3nykvDcfKeuLhpT3BSct8kUkMzOTI0eO0LFjR+MxrVZLx44dOXDggAUjKz0SExMBcHd3t3AkJd+oUaPo1q2byc+reHxbt26ladOmvPTSS3h7e9OoUSO+/PJLS4dVorVs2ZLw8HDOnj0LwPHjx/n111/p0qWLhSMTZZmU9U+HlPfmI+W9+UhZXzSkvC84K0sHUFrFxcWh1+spX768yfHy5ctz+vRpC0VVehgMBsaNG0erVq145plnLB1OibZu3TqOHj3K4cOHLR1KqXHx4kUWL15MaGgokyZN4vDhw/z73//GxsaGIUOGWDq8EmnChAkkJSVRq1YtdDoder2emTNnMnDgQEuHJsowKeuLnpT35iPlvXlJWV80pLwvOEnkRYk0atQo/vrrL3799VdLh1KiXbt2jbFjx7Jz507s7OwsHU6pYTAYaNq0KbNmzQKgUaNG/PXXX3zxxRdSuD+mDRs2sHr1atasWUPdunU5duwY48aNw9fXV56pEKWYlPfmIeW9+UlZXzSkvC84SeSLiKenJzqdjujoaJPj0dHR+Pj4WCiq0mH06NF8//337Nu3j0qVKlk6nBLtyJEjxMTE0LhxY+MxvV7Pvn37WLRoERkZGeh0OgtGWDJVqFCBOnXqmByrXbs233zzjYUiKvneeustJkyYQP/+/QGoV68eV65cYfbs2VKwC4uRsr5oSXlvPlLem5+U9UVDyvuCkzHyRcTGxoYmTZoQHh5uPGYwGAgPD6dFixYWjKzkUhSF0aNHs3nzZnbv3k3VqlUtHVKJ16FDB06cOMGxY8eMW9OmTRk4cCDHjh2TQv0xtWrVKtdSSWfPnqVKlSoWiqjkS01NRas1LbJ0Oh0Gg8FCEQkhZX1RkfLe/KS8Nz8p64uGlPcFJy3yRSg0NJQhQ4bQtGlTgoKCCAsLIyUlhWHDhlk6tBJp1KhRrFmzhm+//RYnJyeioqIAcHFxwd7e3sLRlUxOTk65xhw6Ojri4eEhYxGfwBtvvEHLli2ZNWsWffv25dChQyxZsoQlS5ZYOrQSq0ePHsycOZPKlStTt25d/vjjDxYsWMDw4cMtHZoo46SsNz8p781Pynvzk7K+aEh5XwiKKFKffvqpUrlyZcXGxkYJCgpSDh48aOmQSiwgz2358uWWDq1Uadu2rTJ27FhLh1Hifffdd8ozzzyj2NraKrVq1VKWLFli6ZBKtKSkJGXs2LFK5cqVFTs7OyUgIEB59913lYyMDEuHJoSU9WYm5f3TIeX9k5Oy3vykvC84WUdeCCGEEEIIIYQoQWSMvBBCCCGEEEIIUYJIIi+EEEIIIYQQQpQgksgLIYQQQgghhBAliCTyQgghhBBCCCFECSKJvBBCCCGEEEIIUYJIIi+EEEIIIYQQQpQgksgLIYQQQgghhBAliCTyQgghhBBCCCFECSKJvBCiWNBoNGzZssXSYQghhBCiiEhZL4T5SCIvhGDo0KFoNJpcW+fOnS0dmhBCCCHMQMp6IUoXK0sHIIQoHjp37szy5ctNjtna2looGiGEEEKYm5T1QpQe0iIvhADUgtzHx8dkc3NzA9SucIsXL6ZLly7Y29sTEBDA//73P5PPnzhxgv/7v//D3t4eDw8P/vGPf5CcnGxyzrJly6hbty62trZUqFCB0aNHm7wfFxdH7969cXBwIDAwkK1btxrfu337NgMHDsTLywt7e3sCAwNz/TEihBBCiPxJWS9E6SGJvBCiQN577z1CQkI4fvw4AwcOpH///pw6dQqAlJQUgoODcXNz4/Dhw2zcuJFdu3aZFN6LFy9m1KhR/OMf/+DEiRNs3bqV6tWrm9xj2rRp9O3blz///JOuXbsycOBAbt26Zbz/yZMn2bZtG6dOnWLx4sV4eno+vQcghBBClHJS1gtRgihCiDJvyJAhik6nUxwdHU22mTNnKoqiKIAycuRIk880b95cef311xVFUZQlS5Yobm5uSnJysvH9H374QdFqtUpUVJSiKIri6+urvPvuu/nGACiTJ0827icnJyuAsm3bNkVRFKVHjx7KsGHDzPOFhRBCiDJGynohShcZIy+EAKB9+/YsXrzY5Ji7u7vxdYsWLUzea9GiBceOHQPg1KlTNGjQAEdHR+P7rVq1wmAwcObMGTQaDTdu3KBDhw4PjaF+/frG146Ojjg7OxMTEwPA66+/TkhICEePHuX555+nV69etGzZ8rG+qxBCCFEWSVkvROkhibwQAlAL0we7v5mLvb19gc6ztrY22ddoNBgMBgC6dOnClStX+PHHH9m5cycdOnRg1KhRzJs3z+zxCiGEEKWRlPVClB4yRl4IUSAHDx7MtV+7dm0AateuzfHjx0lJSTG+HxERgVarpWbNmjg5OeHv7094ePgTxeDl5cWQIUNYtWoVYWFhLFmy5ImuJ4QQQoh7pKwXouSQFnkhBAAZGRlERUWZHLOysjJOMrNx40aaNm3Kc889x+rVqzl06BBLly4FYODAgbz//vsMGTKEqVOnEhsby5gxY3jllVcoX748AFOnTmXkyJF4e3vTpUsX7ty5Q0REBGPGjClQfFOmTKFJkybUrVuXjIwMvv/+e+MfF0IIIYR4NCnrhSg9JJEXQgCwfft2KlSoYHKsZs2anD59GlBnmV23bh3/+te/qFChAmvXrqVOnToAODg4sGPHDsaOHUuzZs1wcHAgJCSEBQsWGK81ZMgQ0tPT+fjjjxk/fjyenp706dOnwPHZ2NgwceJELl++jL29Pa1bt2bdunVm+OZCCCFE2SBlvRClh0ZRFMXSQQghijeNRsPmzZvp1auXpUMRQgghRBGQsl6IkkXGyAshhBBCCCGEECWIJPJCCCGEEEIIIUQJIl3rhRBCCCGEEEKIEkRa5IUQQgghhBBCiBJEEnkhhBBCCCGEEKIEkUReCCGEEEIIIYQoQSSRF0IIIYQQQgghShBJ5IUQQgghhBBCiBJEEnkhhBBCCCGEEKIEkUReCCGEEEIIIYQoQSSRF0IIIYQQQgghSpD/B0bl+cTK5DKlAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def plot_training_history(history, title=\"Model Training History\"):\n",
    "    \"\"\"\n",
    "    绘制训练与验证的损失和准确率曲线\n",
    "    \"\"\"\n",
    "    plt.figure(figsize=(12, 5))\n",
    "\n",
    "    # 损失曲线\n",
    "    plt.subplot(1, 2, 1)\n",
    "    plt.plot(history.history['loss'], label='Train Loss')\n",
    "    plt.plot(history.history['val_loss'], label='Validation Loss')\n",
    "    plt.title(f'{title} - Loss')\n",
    "    plt.xlabel('Epochs')\n",
    "    plt.ylabel('Loss')\n",
    "    plt.legend()\n",
    "\n",
    "    # 准确率曲线\n",
    "    plt.subplot(1, 2, 2)\n",
    "    plt.plot(history.history['accuracy'], label='Train Accuracy')\n",
    "    plt.plot(history.history['val_accuracy'], label='Validation Accuracy')\n",
    "    plt.title(f'{title} - Accuracy')\n",
    "    plt.xlabel('Epochs')\n",
    "    plt.ylabel('Accuracy')\n",
    "    plt.legend()\n",
    "\n",
    "    plt.show()\n",
    "\n",
    "# 绘制训练曲线\n",
    "plot_training_history(history1, title=\"Net1 Training History\")\n",
    "plot_training_history(history2, title=\"Net2 Training History\")\n",
    "plot_training_history(history3, title=\"Net3 Training History\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 软投票融合 + 阈值法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:42:35.009075Z",
     "iopub.status.busy": "2024-12-29T17:42:35.008773Z",
     "iopub.status.idle": "2024-12-29T17:42:39.546953Z",
     "shell.execute_reply": "2024-12-29T17:42:39.546212Z",
     "shell.execute_reply.started": "2024-12-29T17:42:35.009052Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step\n",
      "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step\n",
      "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step\n"
     ]
    }
   ],
   "source": [
    "predictions1 = model1.predict(X_test)\n",
    "predictions2 = model2.predict(X_test)\n",
    "predictions3 = model3.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:42:41.011030Z",
     "iopub.status.busy": "2024-12-29T17:42:41.010691Z",
     "iopub.status.idle": "2024-12-29T17:42:41.017564Z",
     "shell.execute_reply": "2024-12-29T17:42:41.016673Z",
     "shell.execute_reply.started": "2024-12-29T17:42:41.011002Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[9.99956608e-01, 7.77442983e-06, 2.93746907e-05, 6.29013357e-06],\n",
       "       [1.75929961e-06, 2.23925774e-04, 9.99769509e-01, 4.89606828e-06],\n",
       "       [1.10810805e-11, 4.30497912e-12, 7.15135506e-09, 1.00000000e+00],\n",
       "       [1.00000000e+00, 2.99059222e-09, 9.20167338e-08, 1.18328458e-09],\n",
       "       [9.99920249e-01, 3.02985653e-12, 2.74808663e-05, 5.23273811e-05]],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 平均融合预测结果\n",
    "predictions_weighted = 0.32 * predictions1 + 0.33 * predictions2 + 0.35* predictions3\n",
    "predictions_weighted[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:42:44.821843Z",
     "iopub.status.busy": "2024-12-29T17:42:44.821503Z",
     "iopub.status.idle": "2024-12-29T17:42:44.836310Z",
     "shell.execute_reply": "2024-12-29T17:42:44.835387Z",
     "shell.execute_reply.started": "2024-12-29T17:42:44.821817Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>label_0</th>\n",
       "      <th>label_1</th>\n",
       "      <th>label_2</th>\n",
       "      <th>label_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100000</td>\n",
       "      <td>9.999566e-01</td>\n",
       "      <td>7.774430e-06</td>\n",
       "      <td>2.937469e-05</td>\n",
       "      <td>6.290134e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>100001</td>\n",
       "      <td>1.759300e-06</td>\n",
       "      <td>2.239258e-04</td>\n",
       "      <td>9.997695e-01</td>\n",
       "      <td>4.896068e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>100002</td>\n",
       "      <td>1.108108e-11</td>\n",
       "      <td>4.304979e-12</td>\n",
       "      <td>7.151355e-09</td>\n",
       "      <td>1.000000e+00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>100003</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>2.990592e-09</td>\n",
       "      <td>9.201673e-08</td>\n",
       "      <td>1.183285e-09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100004</td>\n",
       "      <td>9.999202e-01</td>\n",
       "      <td>3.029857e-12</td>\n",
       "      <td>2.748087e-05</td>\n",
       "      <td>5.232738e-05</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       id       label_0       label_1       label_2       label_3\n",
       "0  100000  9.999566e-01  7.774430e-06  2.937469e-05  6.290134e-06\n",
       "1  100001  1.759300e-06  2.239258e-04  9.997695e-01  4.896068e-06\n",
       "2  100002  1.108108e-11  4.304979e-12  7.151355e-09  1.000000e+00\n",
       "3  100003  1.000000e+00  2.990592e-09  9.201673e-08  1.183285e-09\n",
       "4  100004  9.999202e-01  3.029857e-12  2.748087e-05  5.232738e-05"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 准备提交结果\n",
    "submit = pd.DataFrame()\n",
    "submit['id'] = range(100000, 120000)\n",
    "submit['label_0'] = predictions_weighted[:, 0]\n",
    "submit['label_1'] = predictions_weighted[:, 1]\n",
    "submit['label_2'] = predictions_weighted[:, 2]\n",
    "submit['label_3'] = predictions_weighted[:, 3]\n",
    "submit.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:42:47.153574Z",
     "iopub.status.busy": "2024-12-29T17:42:47.153276Z",
     "iopub.status.idle": "2024-12-29T17:42:55.115914Z",
     "shell.execute_reply": "2024-12-29T17:42:55.115059Z",
     "shell.execute_reply.started": "2024-12-29T17:42:47.153551Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "810 id         1.008100e+05\n",
      "label_0    3.337561e-01\n",
      "label_1    5.442132e-07\n",
      "label_2    2.926911e-01\n",
      "label_3    3.735523e-01\n",
      "Name: 810, dtype: float64\n",
      "1619 id         101619.000000\n",
      "label_0         0.292226\n",
      "label_1         0.001081\n",
      "label_2         0.249948\n",
      "label_3         0.456745\n",
      "Name: 1619, dtype: float64\n",
      "2103 id         102103.000000\n",
      "label_0         0.344908\n",
      "label_1         0.003888\n",
      "label_2         0.226811\n",
      "label_3         0.424392\n",
      "Name: 2103, dtype: float64\n",
      "3995 id         103995.000000\n",
      "label_0         0.393065\n",
      "label_1         0.134333\n",
      "label_2         0.144618\n",
      "label_3         0.327983\n",
      "Name: 3995, dtype: float64\n",
      "4675 id         104675.000000\n",
      "label_0         0.355986\n",
      "label_1         0.452222\n",
      "label_2         0.005558\n",
      "label_3         0.186234\n",
      "Name: 4675, dtype: float64\n",
      "6280 id         106280.000000\n",
      "label_0         0.213049\n",
      "label_1         0.334486\n",
      "label_2         0.452450\n",
      "label_3         0.000015\n",
      "Name: 6280, dtype: float64\n",
      "6525 id         106525.000000\n",
      "label_0         0.282254\n",
      "label_1         0.049209\n",
      "label_2         0.331763\n",
      "label_3         0.336775\n",
      "Name: 6525, dtype: float64\n",
      "8921 id         108921.000000\n",
      "label_0         0.328001\n",
      "label_1         0.349090\n",
      "label_2         0.322901\n",
      "label_3         0.000008\n",
      "Name: 8921, dtype: float64\n",
      "11745 id         111745.000000\n",
      "label_0         0.491276\n",
      "label_1         0.333715\n",
      "label_2         0.154103\n",
      "label_3         0.020906\n",
      "Name: 11745, dtype: float64\n",
      "14683 id         114683.000000\n",
      "label_0         0.428783\n",
      "label_1         0.409987\n",
      "label_2         0.161226\n",
      "label_3         0.000004\n",
      "Name: 14683, dtype: float64\n",
      "16320 id         1.163200e+05\n",
      "label_0    4.522851e-01\n",
      "label_1    2.318542e-01\n",
      "label_2    3.158603e-01\n",
      "label_3    3.457739e-07\n",
      "Name: 16320, dtype: float64\n",
      "17922 id         117922.000000\n",
      "label_0         0.273793\n",
      "label_1         0.421260\n",
      "label_2         0.304922\n",
      "label_3         0.000025\n",
      "Name: 17922, dtype: float64\n",
      "18628 id         118628.000000\n",
      "label_0         0.226800\n",
      "label_1         0.000008\n",
      "label_2         0.458063\n",
      "label_3         0.315130\n",
      "Name: 18628, dtype: float64\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>label_0</th>\n",
       "      <th>label_1</th>\n",
       "      <th>label_2</th>\n",
       "      <th>label_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>100001</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>100002</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>100003</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>100004</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       id  label_0  label_1  label_2  label_3\n",
       "0  100000      1.0      0.0      0.0      0.0\n",
       "1  100001      0.0      0.0      1.0      0.0\n",
       "2  100002      0.0      0.0      0.0      1.0\n",
       "3  100003      1.0      0.0      0.0      0.0\n",
       "4  100004      1.0      0.0      0.0      0.0"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 第一次后处理未涉及的难样本 index\n",
    "others = []\n",
    "\n",
    "# 第一次后处理 - 将预测概率值大于 0.5 的样本的概率置 1，其余置 0\n",
    "threshold = 0.5  \n",
    "for index, row in submit.iterrows():\n",
    "    row_max = max(list(row[1:]))  # 当前行中的最大类别概率预测值\n",
    "    if row_max > threshold:\n",
    "        for i in range(1, 5):\n",
    "            if row[i] > threshold:\n",
    "                submit.iloc[index, i] = 1  # 大于 0.5 的类别概率预测值置 1\n",
    "            else:\n",
    "                submit.iloc[index, i] = 0  # 其余类别概率预测值置 0\n",
    "    else:\n",
    "        others.append(index)  # 否则，没有类别概率预测值不小于 0.5，加入第一次后处理未涉及的难样本列表，等待第二次后处理\n",
    "        print(index, row)\n",
    "                \n",
    "submit.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:42:59.438933Z",
     "iopub.status.busy": "2024-12-29T17:42:59.438571Z",
     "iopub.status.idle": "2024-12-29T17:42:59.458896Z",
     "shell.execute_reply": "2024-12-29T17:42:59.458032Z",
     "shell.execute_reply.started": "2024-12-29T17:42:59.438904Z"
    },
    "trusted": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id         100810.000000\n",
      "label_0         0.333756\n",
      "label_1         0.000000\n",
      "label_2         0.000000\n",
      "label_3         0.373552\n",
      "Name: 810, dtype: float64\n",
      "id         101619.0\n",
      "label_0         0.0\n",
      "label_1         0.0\n",
      "label_2         0.0\n",
      "label_3         1.0\n",
      "Name: 1619, dtype: float64\n",
      "id         102103.0\n",
      "label_0         0.0\n",
      "label_1         0.0\n",
      "label_2         0.0\n",
      "label_3         1.0\n",
      "Name: 2103, dtype: float64\n",
      "id         103995.0\n",
      "label_0         1.0\n",
      "label_1         0.0\n",
      "label_2         0.0\n",
      "label_3         0.0\n",
      "Name: 3995, dtype: float64\n",
      "id         104675.0\n",
      "label_0         0.0\n",
      "label_1         1.0\n",
      "label_2         0.0\n",
      "label_3         0.0\n",
      "Name: 4675, dtype: float64\n",
      "id         106280.0\n",
      "label_0         0.0\n",
      "label_1         0.0\n",
      "label_2         1.0\n",
      "label_3         0.0\n",
      "Name: 6280, dtype: float64\n",
      "id         106525.000000\n",
      "label_0         0.000000\n",
      "label_1         0.000000\n",
      "label_2         0.331763\n",
      "label_3         0.336775\n",
      "Name: 6525, dtype: float64\n",
      "id         108921.000000\n",
      "label_0         0.328001\n",
      "label_1         0.349090\n",
      "label_2         0.000000\n",
      "label_3         0.000000\n",
      "Name: 8921, dtype: float64\n",
      "id         111745.0\n",
      "label_0         1.0\n",
      "label_1         0.0\n",
      "label_2         0.0\n",
      "label_3         0.0\n",
      "Name: 11745, dtype: float64\n",
      "id         114683.000000\n",
      "label_0         0.428783\n",
      "label_1         0.409987\n",
      "label_2         0.000000\n",
      "label_3         0.000000\n",
      "Name: 14683, dtype: float64\n",
      "id         116320.0\n",
      "label_0         1.0\n",
      "label_1         0.0\n",
      "label_2         0.0\n",
      "label_3         0.0\n",
      "Name: 16320, dtype: float64\n",
      "id         117922.0\n",
      "label_0         0.0\n",
      "label_1         1.0\n",
      "label_2         0.0\n",
      "label_3         0.0\n",
      "Name: 17922, dtype: float64\n",
      "id         118628.0\n",
      "label_0         0.0\n",
      "label_1         0.0\n",
      "label_2         1.0\n",
      "label_3         0.0\n",
      "Name: 18628, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# 第二次后处理 - 在预测概率值均不大于 0.5 的样本中，若最大预测值与次大预测值相差大于 0.04，则将最大预测值置 1，其余预测值置 0；\n",
    "#                否则，对最大预测值和次大预测值不处理 (难分类)，仅对其余样本预测值置 0\n",
    "for idx in others:\n",
    "    value = submit.iloc[idx].values[1:]\n",
    "    ordered_value = sorted([(v, j) for j, v in enumerate(value)], reverse=True)  # 根据类别概率预测值大小排序\n",
    "    #print(ordered_value)\n",
    "    if ordered_value[0][0] - ordered_value[1][0] >= 0.04:  # 最大与次大值相差至少 0.04\n",
    "        submit.iloc[idx, ordered_value[0][1]+1] = 1  # 则足够置信最大概率预测值并置为 1\n",
    "        for k in range(1, 4):\n",
    "            submit.iloc[idx, ordered_value[k][1]+1] = 0  # 对非最大的其余三个类别概率预测值置 0\n",
    "    else:\n",
    "        for s in range(2, 4):\n",
    "            submit.iloc[idx, ordered_value[s][1]+1] = 0  # 难分样本，仅对最小的两个类别概率预测值置 0        \n",
    "        \n",
    "    print(submit.iloc[idx])   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 保存结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2024-12-29T17:43:03.179453Z",
     "iopub.status.busy": "2024-12-29T17:43:03.179130Z",
     "iopub.status.idle": "2024-12-29T17:43:03.226230Z",
     "shell.execute_reply": "2024-12-29T17:43:03.225585Z",
     "shell.execute_reply.started": "2024-12-29T17:43:03.179423Z"
    },
    "trusted": true
   },
   "outputs": [],
   "source": [
    "# 检视最后的预测结果\n",
    "submit.head()\n",
    "# 保存预测结果\n",
    "submit.to_csv((\"submit_\"+datetime.datetime.now().strftime('%Y%m%d_%H%M%S') + \".csv\"), index=False) "
   ]
  }
 ],
 "metadata": {
  "kaggle": {
   "accelerator": "gpu",
   "dataSources": [
    {
     "datasetId": 6382021,
     "sourceId": 10309702,
     "sourceType": "datasetVersion"
    }
   ],
   "dockerImageVersionId": 30822,
   "isGpuEnabled": true,
   "isInternetEnabled": true,
   "language": "python",
   "sourceType": "notebook"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
